我的SQL Server数据库的表中的一列中有一个逗号分隔的值,例如npm install babel-core babel-loader --save-dev
。我想替换逗号分隔的字符串中的特定值。即从1,2,3,4
起,我必须将5替换为1,将6替换为2。预期的输出为1,2,3
。
我将在多行中分别具有值1和2。因此,我需要在所有行中对其进行更新。我有一个表,其中包含要更新的新值(即5,6,3
)。
简而言之,我在一个列中有一个表,其中用逗号分隔值,而在另一个表中则包含了新值。我需要用新值更新逗号分隔的值。
答案 0 :(得分:2)
WITH cte AS (SELECT A.*,
T.pkcolumn,
T.column1
FROM table1 AS T
CROSS apply String_split(column1, ',') AS A
WHERE column1 = '<oldValue>'
OR column1 LIKE '<oldValue>,%'
OR column1 LIKE '%,<oldValue>,%'
OR column1 LIKE '%,<oldValue>')
UPDATE Y
SET column1 = Stuff((SELECT ',' + CASE WHEN value = '<oldValue>' THEN
'<newValue>'
ELSE value
END
FROM cte t1
WHERE t1.pkcolumn = t2.pkcolumn
FOR xml path ('')), 1, 1, '')
FROM cte t2
LEFT OUTER JOIN table1 AS Y
ON Y.pkcolumn = t2.pkcolumn `
答案 1 :(得分:0)
您可以使用类似这样的功能将行中的逗号分隔值移动到新表中;
try...except ImportError:
然后您可以更新,但是您想更新它们。
我会保留该表并删除该列。.但是,如果基础结构太晚或更改太迟,则可以将其更新回表。
答案 2 :(得分:0)
declare @str varchar(20) = '1,2,3,4,5,6'
select REPLACE(replace(@str, '1', '5'), '2', '6')
--replace 1 with 5 and 2 with 6
答案 3 :(得分:-1)
您可以使用
之类的查询select REPLACE(REPLACE([Value], 1, 5), 2, 6)
from TestTable
并插入到新的表格列中。
但这仍然取决于您的要求。
谢谢。