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)
答案 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)