SQL Server中如何获取逗号分隔列的去重值列表
SQL Server 字符串列按行去重实现方案
你使用的SQL Server 15.0.x(SQL Server 2019)版本原生支持字符串拆分和聚合函数,可通过拆分→去重→重新拼接的逻辑实现需求,完整代码如下:
-- 请将下方的 animal_table 替换为你实际的表名 SELECT STRING_AGG(animal_name, ',') WITHIN GROUP (ORDER BY (SELECT 1)) AS column1 FROM animal_table t CROSS APPLY ( -- 拆分字符串后去重,可添加WHERE value <> ''过滤空值 SELECT DISTINCT value AS animal_name FROM STRING_SPLIT(t.column1, ',') ) AS distinct_animals -- 如果表有主键/唯一标识列,建议按主键分组,避免内容相同的行被合并,示例:GROUP BY t.id, t.column1 GROUP BY t.column1
逻辑说明
STRING_SPLIT(t.column1, ','):将每行column1的逗号分隔字符串,拆分为单动物名称的独立行SELECT DISTINCT:对拆分后的动物名称执行行级去重STRING_AGG(animal_name, ','):将去重后的单个动物名称重新拼接为逗号分隔的字符串,ORDER BY (SELECT 1)参数保持动物原出现顺序,如需按字典序排序可修改为ORDER BY animal_name
内容的提问来源于stack exchange,提问作者Eisen
相关产品推荐
相关产品推荐

