gpt4 book ai didi

Sql从逗号分隔的字符串中删除重复项

转载 作者:行者123 更新时间:2023-12-04 01:57:49 24 4
gpt4 key购买 nike

我想在 sql-server 中进行查询,它可以使以下输出像 column_A.Columns 中的列 _B 一样是 varchar 类型。

  Column_A                                 column_B
karim,karim,rahim,masud,raju,raju karim,rahim,masud,raju
jon,man,jon,kamal,kamal jon,man,kamal
c,abc,abc,pot c,abc,pot

最佳答案

首先:您已经在评论中被告知,这是一个非常糟糕的设计(违反 1.NF)!如果你有一丝改变这个的机会,你真的应该... 永远不要在一个单元格中存储多个值!

如果你必须坚持这个(或者为了修复这个烂摊子),你可以这样:

这是我能想到的最简单的方法:将 CSV 转换为 XML 并调用 XQuery -功能distinct-values()

DECLARE @tbl TABLE(ColumnA VARCHAR(MAX));
INSERT INTO @tbl VALUES
('karim,karim,rahim,masud,raju,raju')
,('jon,man,jon,kamal,kamal')
,('c,abc,abc,pot');

WITH Splitted AS
(
SELECT ColumnA
,CAST('<x>' + REPLACE(ColumnA,',','</x><x>') + '</x>' AS XML) AS TheParts
FROM @tbl
)
SELECT ColumnA
,TheParts.query('distinct-values(/x/text())').value('.','varchar(250)') AS ColumnB
FROM Splitted;

结果
ColumnA                             ColumnB
karim,karim,rahim,masud,raju,raju karim rahim masud raju
jon,man,jon,kamal,kamal jon man kamal
c,abc,abc,pot c abc pot

更新保留逗号
WITH Splitted AS
(
SELECT ColumnA
,CAST('<x>' + REPLACE(ColumnA,',','</x><x>') + '</x>' AS XML) AS TheParts
FROM @tbl
)
SELECT ColumnA
,STUFF(
(TheParts.query
('
for $x in distinct-values(/x/text())
return <x>{concat(",", $x)}</x>
').value('.','varchar(250)')),1,1,'') AS ColumnB
FROM Splitted;

结果
ColumnB
karim,rahim,masud,raju
jon,man,kamal
c,abc,pot

关于Sql从逗号分隔的字符串中删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49361543/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com