在 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;
字符串被拆分为其元素。然后在没有“失败”的情况下重新连接。
这是我的专栏,名为 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;
字符串被拆分为其元素。然后在没有“失败”的情况下重新连接。