如何用STRING_SPLIT拆分含浮点值的数组为独立唯一行?
解决SQL拆分varchar数组为独立行的问题
你的SQL出现重复整串结果的核心原因是:SELECT子句引用的是原表的VALUE列,而非拆分后生成的f.VALUE字段,导致每次拆分操作都返回完整的原字符串,进而产生重复行。
以下是两种可行的解决方案:
方法一:先清理字符串再拆分
先移除数组的方括号,再按逗号拆分,最后去除每个元素的前后空格:
SELECT TRIM(f.value) AS value FROM your_table CROSS APPLY STRING_SPLIT(REPLACE(REPLACE(your_table.value, '[', ''), ']', ''), ',') AS f
方法二:拆分后清理单个元素
先按逗号拆分原字符串,再对每个拆分出的元素清理方括号和空格:
SELECT TRIM(REPLACE(REPLACE(f.value, '[', ''), ']', '')) AS value FROM your_table CROSS APPLY STRING_SPLIT(your_table.value, ',') AS f
确保值唯一(可选)
如果数组中存在重复值,需要去重的话,可添加DISTINCT关键字:
SELECT DISTINCT TRIM(f.value) AS value FROM your_table CROSS APPLY STRING_SPLIT(REPLACE(REPLACE(your_table.value, '[', ''), ']', ''), ',') AS f
执行以上语句后,会得到预期的独立行结果:
| value |
|---|
| 207.0 |
| 206.8 |
| 205.6 |
内容的提问来源于stack exchange,提问作者METZGERR
相关产品推荐
相关产品推荐

