SQL删除字符串中间的额外逗号

Jef*_*ett 1 sql t-sql sql-server-2012

我有这样的数据,,a,,c,,,,,i,j,k,,m,,,,,
我需要删除额外的逗号,所以它看起来像这样a,c,i,j,k,m

我正在使用MS SQL Server 2012

Gor*_*off 6

这有一个很酷的技巧:

select replace(replace(replace(col, ',', '><'), '<>', ''), '><', ',')
Run Code Online (Sandbox Code Playgroud)

这摆脱了所有重复的逗号,但不包括开头和结尾的逗号.如果值中没有空格,我建议用空格替换逗号,然后再返回,这样就可以使用trim函数:

select replace(ltrim(rtrim(replace(replace(replace(replace(col, ',', '><'), '<>', ''), '><', ','), ',', ' '))), ' ', ',')
Run Code Online (Sandbox Code Playgroud)

除非你定义自己的函数,否则我不确定是否有更漂亮的方法.