我有一个问题。
我想要替换所有以2开头的列,以2结束并在其中包含2。 例如,我的专栏;
[数字]
1,2,22,33,4,5
2,3,42,25,6
12,28,62,2
我想用X替换“仅2”(不是22或25等)。这是我的查询:
UPDATE mytable
set Numbers = replace(Numbers, ',2', ',X') WHERE Numbers like '%,2'
UPDATE mytable
set Numbers = replace(Numbers, ',2,', ',X,') WHERE Numbers like '%,2,%'
UPDATE mytable
set Numbers = replace(Numbers, '2,', 'X,') WHERE Numbers like '2,%'
但输出不是真的。此代码用X替换列中的所有2。
任何人都可以帮助我吗?我怎样才能写出真正的查询?
答案 0 :(得分:4)
尝试此操作然后移除','
(第一个和结束)
SELECT REPLACE(',' + REPLACE('1, 2, 22, 33, 4, 5', ' ', '') + ',', ',2,', ',X,') -- ,1,X,22,33,4,5,
SELECT REPLACE(',' + REPLACE('2, 3, 42, 25, 6', ' ', '') + ',', ',2,', ',X,') -- ,X,3,42,25,6,
SELECT REPLACE(',' + REPLACE('12, 28, 62, 2', ' ', '') + ',', ',2,', ',X,') -- ,12,28,62,X,
查询看起来像:
UPDATE mytable
SET Numbers = SUBSTRING(NewNumbers, 2, LEN(NewNumbers) - 2)
FROM
(
SELECT
Id,
REPLACE(',' + REPLACE(Numbers, ' ', '') + ',', ',2,', ',X,') AS NewNumbers
FROM
mytable
) A
WHERE
mytable.Id = A.Id
-- Your where clause
答案 1 :(得分:0)
这只是一个想法......
UPDATE mytable
set Numbers = 'X,'+substring(Numbers,3) WHERE Numbers like '2,%'
UPDATE mytable
set Numbers = replace(Numbers, ',2,', ',X,') WHERE Numbers like '%,2,%'
UPDATE mytable
set Numbers = substring(Numbers,1,LENGTH(Numbers)-2)+',X' WHERE Numbers like '%,2'