如何使用SQL Server用逗号替换数字之间的空格?

时间:2017-07-05 03:35:44

标签: tsql

SELECT REPLACE('245 289 252 722 265,420 (22,791) (23,482) (24,662)', '^[0-9]', ',')

原始结果:245 289 252 722 265,420 (22,791) (23,482) (24,662)

需要结果:245,289 252,722 265,420 (22,791) (23,482) (24,662)

2 个答案:

答案 0 :(得分:1)

我认为这个问题的假设是数据是给定的,特定的,一致的格式(否则这种格式是没有意义的)。下面显示了提供所需结果的实现:

SELECT
  STUFF(
    (
      SELECT 
        CASE WHEN (ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) % 2 = 0) AND LEFT([value], 1) <> '(' AND RIGHT([value], 1) <> ')' THEN CONCAT(',', value) 
        ELSE CONCAT(' ', value) END 
      FROM 
        STRING_SPLIT('245 289 252 722 265,420 (22,791) (23,482) (24,662)', ' ') 
      FOR XML PATH('')
    ), 
    1, 
    1, 
    ''
  ) AS [value]

输入:245 289 252 722 265,420 (22,791) (23,482) (24,662)

输出:245,289 252,722 265,420 (22,791) (23,482) (24,662)

必须设置兼容级130才能使用STRING_SPLIT

答案 1 :(得分:0)

只需用逗号替换空格即可。要处理括号之间的逗号,请使用另一个替换:

SELECT REPLACE(REPLACE('245 289 252 722 265,420 (22,791) (23,482) (24,662)', ' ', ','), '),(', ') (')

结果:

 245,289,252,722,265,420,(22,791) (23,482) (24,662)