SQL Server-添加到此查询中,首先检查是否存在字符串



我的数据库中有一个名为CatCustomnvarchar字段,其中包含逗号分隔的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%';

最新更新