個人情報を部分的に隠す


SQL Serverで個人情報を部分的に隠したいとき。
てきとー。

USE でーたべーす名
GO

SELECT すきーま.MyMosaicTxt(N'TEST', '#', 1);
SELECT すきーま.MyMosaicTxt(N'日本語のテスト', '#', 1);
SELECT すきーま.MyMosaicTxt(N'一文字飛ばし以外', '×', 2);
SELECT すきーま.MyMosaicTxt(N'個人情報', '*', 3);

それぞれ下記のように帰ってくるよう関数を作る
T#S#
日#語#テ#ト#
一文×飛ば×以外×
個人情*

下記 (入力文字,代替文字,飛ばし間隔)
SELECT文中で使い、変換。

--mosaic
USE でーたべーすめい;
GO

CREATE FUNCTION MyMosaicTxt (@inputTxt NVARCHAR(MAX), @mosaicTxt NVARCHAR(1), @mosaicStep INT)
RETURNS NVARCHAR(MAX)
WITH SCHEMABINDING AS
BEGIN
  DECLARE @nowInx INT;
  SET @nowInx = 1;
  DECLARE @inputLen INT;
  SET @inputLen = LEN(@inputTxt);
  IF @inputTxt IS NULL
  BEGIN
   return NULL;
  END

  DECLARE @result NVARCHAR(MAX);
  SET @result = '';

  WHILE (@nowInx <= @inputLen)
  BEGIN
    SET @result = @result + SUBSTRING(@inputTxt, @nowInx, @mosaicStep);
    SET @nowInx = @nowInx + @mosaicStep;
    SET @result = @result + @mosaicTxt;
    SET @nowInx = @nowInx + 1;
  END
  RETURN @result;
END
カテゴリー: 開発, 開発環境 タグ: パーマリンク