我有一个包含 3 列的表格,其中包含下面给出的数据。
ID | Col1 | Col2 | Status
1 8007590006 8002240001,8002170828 I
2 8002170828 8002000004 I
3 8002000001 8002240001 I
4 8769879809 8002000001 I
5 8769879809 8002000001 I
Col2
可以包含多个逗号分隔值。如果 col2
中的值也存在于 col1
中,我需要将状态更新为 C。
例如,对于 ID = 1
,col2
包含 8002170828
,它出现在 Col1
中,ID = 2
。所以,status = 'C'
根据我的尝试,我知道它在有多个值的情况下不起作用,因为我需要拆分该数据并获取各个值,然后应用更新。
UPDATE Table1
SET STATUS = 'C'
WHERE Col1 IN (SELECT Col2 FROM Table1)
最佳答案
如果您使用的是 SQL Server 2016 或更高版本,则 STRING_SPLIT
派上用场:
WITH cte AS (
SELECT ID, Col1, value AS Col2
FROM Table1
CROSS APPLY STRING_SPLIT(Col2, ',')
)
UPDATE t1
SET Status = 'C'
FROM Table1 t1
INNER JOIN cte t2
ON t1.Col1 = t2.Col2;
Demo
关于sql - 使用逗号分隔符拆分列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56897054/