我面临一个复杂的 sql 更新案例,我不知道如何解决。
我有 nvarchar(32)
类型的列,它由诸如“952683174”之类的数字组成。我确实需要根据以下规则替换它的字符串:
- 1 替换为 3
- 2 替换为 5
- 3 替换为 4
- 4 替换为 1
- 5 替换为 9
- 6 替换为 8
- 7 替换为 2
- 8 替换为 3
- 9 替换为 6
因此对表执行更新查询后,之前的列值“952683174”将变为“695834321”。
最佳答案
可以先将每个数字替换成另一个字符,然后再将字符替换成对应的数字,如下所示:
DECLARE @number nvarchar(32) = '952683174';
SELECT
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
@number,
'1', 'A'),'2', 'B'),'3', 'C'),'4', 'D'),'5', 'E'),'6', 'F'),'7', 'G'),'8', 'H'),'9', 'I'),
'A', '3'),'B', '5'),'C', '4'),'D', '1'),'E', '9'),'F', '8'),'G', '2'),'H', '3'),'I', '6')
关于sql - 根据模式更新和替换字符串值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50112830/