我的数据库中有一个名为CatCustom
的nvarchar
字段,其中包含逗号分隔的5个字符代码。它可以包含一个代码,也可以包含20个代码,用逗号分隔。
现在,我使用这个查询向给定记录中的字段添加一个新的5字符代码(在这种情况下,新代码是LRR01(:
UPDATE dbo.Sources
SET CatCustom = CONCAT_WS(', ', RTRIM(CatCustom), 'LRR01')
WHERE SourceID IN (1,2,3,4,5,8,9,44,63,45,101,102,222,344)
不过,我需要补充一点:只有当CatCustom
字段中的某个位置还不存在5个字符的代码时,我才需要更新记录,以确保代码不会在其中出现不止一次。
我该如何做到这一点?
编辑:我真的不明白这怎么会被认为是建议线程的重复。这是一个非常特殊的情况,与创建存储过程和/或变量无关。所谓的重复线程并不能真正帮助我-对不起。
使用STRING_SPLIT函数拆分逗号分隔的列表,然后在WHERE
子句中添加Not Exist
条件,如下所示
UPDATE dbo.Sources
SET CatCustom = CONCAT_WS(', ', RTRIM(CatCustom), 'LRR01')
WHERE SourceID IN (1,2,3,4,5,8,9,44,63,45,101,102,222,344)
AND NOT EXISTS (SELECT 1 FROM STRING_SPLIT(CatCustom, ',') where value = 'LRR01')
UPDATE dbo.Sources
SET
CatCustom = CONCAT_WS(', ', RTRIM(CatCustom), 'LRR01')
WHERE
SourceID IN (1,2,3,4,5,8,9,44,63,45,101,102,222,344)
AND CatCustom NOT LIKE '%LRR01%';