マッピングテーブルを使用し、ループを使用せずにSQL Serverの文字を文字列から置き換える方法はありますか?SQL - ループを使用せずにマッピングを使用して文字を置換する
私はこのように行くことができるマッピングを持っている:
a => b
b => c
...
z => a
このマッピングは、静的なものではなく、変更することができます。 私はhttps://stackoverflow.com/a/45202933/3161817とhttps://stackoverflow.com/a/13051989/3161817から解決策を試してみましたが、私はばかりしている文字列を持つ終わる、「aaaaaaaa」のよう
私の現在のソリューションのようなものです:
DECLARE @NextChar NCHAR(1)
DECLARE @Position int = 1
DECLARE @StrLength int = LEN(@str)
DECLARE @Result nvarchar(1000) = ''
WHILE (@Position <= @StrLength)
BEGIN
SET @NextChar = SUBSTRING(@str, @Position, 1)
SET @Result = @Result + ISNULL((SELECT ToChar FROM CharMapping
WHERE @NextChar COLLATE Latin1_General_BIN = FromChar COLLATE Latin1_General_BIN
), @NextChar)
SET @Position= @Position + 1
END
が、私は探していますループのない可能な解決策。
私はあなたが私のようではないマッピングテーブル内の任意の文字が残されるべきであることを追加している必要がありますUDF – LONG
としてこれを作成することができますと言うでしょう。 abcdef-zz => bcdefg-aa また、マッピングを使用して大文字/小文字が正しく置き換えられるように、COLLATIONを使用する必要があります。 – pdube