在 MS SQL 中删除逗号分隔字符串中的特定单词

Remove specific word in comma seperate string in MS SQL

这是我的专栏,名为 Sets。

我的专栏:

{C=Pass, D=Fail, E=Pass, F= Pass, G=Pass}
{C=Pass, D=Fail, E=NoApplication}

预计

{C=Pass,  E=Pass, F= Pass, G=Pass}
{C=Pass,  E=NoApplication}

我想删除我专栏中的 "Fail"。 请帮忙。

您可能正在寻找更新命令

UPDATE TableName
SET Name = CASE WHEN CHARINDEX('=Fail,',Name ) > 1
                THEN STUFF(Name,CHARINDEX('=Fail,',Name)-1,LEN('=Fail,')+1,'')
                ELSE Name 
            END 

你可以试试这个

更新在可更新的 CTE

中使用我的方法

更改 table 中的值。只需将 @tbl 替换为您实际的 table 的名称,并将 `YourColumn 替换为列的名称。 注意真实数据!

DECLARE @tbl TABLE(YourColumn VARCHAR(100));
INSERT INTO @tbl VALUES
 ('{C=Pass, D=Fail, E=Pass, F= Pass, G=Pass}')
,('{C=Pass, D=Fail, E=NoApplication}');

WITH Casted AS
(
    SELECT CAST('<x>' + REPLACE(SUBSTRING(t.YourColumn,2,LEN(YourColumn)-2),', ','</x><x>') + '</x>' AS xml) AsXml
            ,t.YourColumn AS OldValue
    FROM @tbl AS t
)
,UpdateableCTE AS
(
SELECT '{'
     + STUFF((
        SELECT ', ' + a.value('.','nvarchar(100)')
        FROM Casted.AsXml.nodes('/x') AS A(a)
        WHERE RIGHT(a.value('.','nvarchar(100)'),4)<>'Fail'
        FOR XML PATH('')
       ),1,2,'')
     + '}' AS NewValue
     ,OldValue
FROM Casted
)
UPDATE UpdateableCTE SET OldValue=NewValue;

SELECT * FROM @tbl;

字符串被拆分为其元素。然后在没有“失败”的情况下重新连接。