在MS SQL中用单个逗号替换多个逗号

san*_*son 1 regex sql t-sql sql-server string

如何在MS SQL中使用单个逗号替换列中的连续逗号?

例如,我有像这样的数据

 a,,,,b,,,c,,,,,,
 d,e,,,f,,,,,,g,,  
Run Code Online (Sandbox Code Playgroud)

我希望将其处理为以下格式:

 a,b,c,
 d,e,f,g,
Run Code Online (Sandbox Code Playgroud)

建议的副本,使用SQL来替换具有单个逗号的字符串中的多个逗号,适用于Oracle.这是一个关于SQL Server的问题.

Luk*_*zda 8

你可以使用简单的REPLACE:

SELECT c, REPLACE(REPLACE(REPLACE(c, ',', '~,'), ',~', ''), '~,', ',')
FROM tab;
Run Code Online (Sandbox Code Playgroud)

DBFiddle演示

输出:

???????????????????????????????
?        c         ?  result  ?
???????????????????????????????
? a,,,,b,,,c,,,,,, ? a,b,c,   ?
? d,e,,,f,,,,,,g,, ? d,e,f,g, ?
???????????????????????????????
Run Code Online (Sandbox Code Playgroud)

请注意,这种方法不依赖于SQL方言,应该与MySQL/Oracle/PostgreSQL/...一起使用