You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从SQL Server的nvarchar类型字段中提取唯一值?

解决SQL Server中JSON数组字段提取唯一值的问题

嗨,刚接触SQL Server遇到这种JSON数组的拆分需求很正常,别着急!你现在的字段存储的是JSON格式的数组,直接用DISTINCT只会对整个数组字符串去重,而没法拆分出里面的单个元素,所以得先把数组“展开”成单独的行,再做去重操作。

具体解决方案

SQL Server 2016及以后的版本提供了专门的JSON处理函数OPENJSON(),可以轻松解析JSON数组并拆分成多行。结合CROSS APPLY和DISTINCT就能实现你的需求:

假设你的表名为YourTableName,存储JSON数组的字段名为YourJsonColumn,执行以下SQL语句即可:

SELECT DISTINCT value AS UniqueValue
FROM YourTableName
CROSS APPLY OPENJSON(YourJsonColumn)
ORDER BY UniqueValue;

代码解释

  • OPENJSON(YourJsonColumn):将每个行中的JSON数组解析为多行结果集,其中默认的value列就是数组中的单个元素
  • CROSS APPLY:把原表的每一行和对应的数组拆分结果关联起来,相当于把每个数组“展开”成独立的行
  • DISTINCT:对展开后的单个元素进行去重,得到所有唯一值
  • ORDER BY:让最终结果按字母顺序排列,和你期望的输出格式一致

验证效果

用你给出的测试数据执行上述语句,会得到完全符合预期的结果:

UniqueValue
-----------
value1
value2
value3
value4
value5
value6
value7

注意事项

  • 这个方案要求你的SQL Server版本是2016或更高,并且数据库兼容级别至少设置为130(可以通过ALTER DATABASE YourDatabase SET COMPATIBILITY_LEVEL = 130;调整)
  • 如果你的SQL Server版本低于2016,需要用字符串拆分的方式处理,但这种方法容易出错(比如处理数组里的逗号、引号等),优先建议升级版本或使用官方的JSON函数

内容的提问来源于stack exchange,提问作者Happy Coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 20:37:50