我正在对 SQL Server 表中的一些字符串进行“随机化”,以对它们进行原始加密。
我有一个嵌套的 SQL 替换函数大约 35 次(AZ,1-9),它基本上采用字母表和数字中的每个字母并将其替换为另一个字母或数字。其中的例子是
Replace(Replace(Replace('a', 'c'), 'b', 'a'), 'c', 'b')
我认为替换功能会通过像'abc'这样的字符串并替换所有内容并停止 - 'cab'。它没有!
似乎想再次更改一些字符导致'abc'->'cab'->'ccb'
.
这很好,除非我有另一个名为“aac”的字符串,这可能会导致重复的字符串,并且我会失去对原始的可追溯性。
谁能解释我如何阻止 REPLACE() 部分返回我的字符串?
SELECT * INTO example_temp FROM example;
Update KAP_db.dbo.example_temp Set col1 = replace(replace(replace(replace(replace(
replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(
replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(
replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(
col1, 'A', 'N'),'B', 'O'), 'C', 'P'), 'D', 'Q'), 'E', 'R'), 'F', 'S'), 'G', 'T'),
'H', 'U'), 'I', 'V'), 'J', 'W'), 'K', 'X'), 'L', 'Y'), 'M', 'Z'), 'O', 'A'), 'P', 'B'),
'Q', 'C'), 'R', 'D'),'S', 'E'),'T', 'E'),'U', 'E'),'V', 'F'),'W', 'G'),'X', 'H'),
'Y', 'I'),'Z', 'J'), '1', '9'),'2','8'),'3','7'),'4','6'),'5','5'),'6','4'),'7','3'),
'8','2'),'9','1'),' ','');
以上结果导致“8EVHUAB”和“8EVHHAB”都输出“2DFEENA”
更新 - - - - - - - - - - - - - - - - - - - - - - - - - ------------------
好的,我已经重做了代码,到目前为止有:
DECLARE @Input AS VarChar(1000)
DECLARE @i AS TinyInt
Declare @Substring AS VarChar(1000)
Declare @Prestring AS VarChar(1000)
Declare @Poststring AS VarChar(1000)
Select @Input='ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789'
SELECT @i = 1
Select @Substring ='na'
WHILE @i <= LEN(@Input) BEGIN
Select @Prestring = SUBSTRING(@Input,-1,@i)
Select @Poststring = SUBSTRING(@Input,@i+1,LEN(@Input))
SELECT @Substring = replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace
(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace
(SUBSTRING(@Input,@i,1), 'A', 'N'),'B', 'O'), 'C', 'P'), 'D', 'Q'), 'E', 'R'), 'F', 'S'), 'G', 'T'), 'H', 'U'), 'I', 'V'), 'J', 'W'), 'K', 'X'), 'L', 'Y'), 'M', 'Z'), 'N', 'A'), '0', 'B'), 'P', 'C')
, 'Q', 'D'),'R', 'E'),'S', 'E'),'T', 'E'),'U', 'F'),'V', 'G'),'W', 'H'),'X', 'I'),'Y', 'J'), '1', '9'),'2','8'),'3','7'),'4','6'),'5','5'),'6','4'),'7','3'),'8','2'),'9','1'),' ','')
Select @Input = @Prestring + @Substring + @Poststring
SELECT @i = @i + 1
print 'END
'
END
但是,这不能正常工作,代码没有按其编写的那样执行,有什么建议吗?