【发布时间】:2017-09-14 05:03:47
【问题描述】:
想使用MSSQL 2008R2根据如下映射执行数据屏蔽:
映射表
A = C
B = A
C = E
1 = 3
2 = 1
3 = 9
原创
ABC123
蒙面
CAE319
这个想法是使用替换,但是第二个替换函数将替换以前的替换值。
select Replace(Replace(Replace(Replace(Replace(REPLACE('ABC123', 'A', 'C'), 'B', 'A'), 'C', 'E'), '1', '3'), '2', '1'), '3', '9')
结果:CAE319
附:值已编辑,因为在这种情况下无法使用反向或反向替换
有什么想法吗?
【问题讨论】:
-
是的,不要使用replace,使用split、join和group concat(用于xml路径和东西)。
-
您需要更改替换的顺序。从内到外,做 3-2-1-C-B-A。
-
@sphenix 更改您的替换顺序。您当前的订单不可传递
标签: sql sql-server tsql replace masking