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

Tsql 如何使用SQL Server将数字之间的空格替换为逗号?,tsql,Tsql,原始结果:245 289 252 722 265420 22791 23482 24662 需要结果:245289 252722 265420 22791 23482 24662。要处理括号之间的逗号,请使用另一个替换: SELECT REPLACE('245 289 252 722 265,420 (22,791) (23,482) (24,662)', '^[0-9]', ',') 结果: SELECT REPLACE(REPLACE('245 289 252 722 265,420 (2

原始结果:245 289 252 722 265420 22791 23482 24662


需要结果:245289 252722 265420 22791 23482 24662。要处理括号之间的逗号,请使用另一个替换:

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

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)
输入:245 289 252 722 265420 22791 23482 24662

输出:24528925272265420 22791 2348224662


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

结果是这样的错误245289252722265420,22791,23482,24662括号之间没有逗号对不起,但您的答案是错误的我需要这样的245289 252722 265420 22791 23482 24662为什么245和289之间有逗号,而不是289和252之间有逗号?所有数字都没有括号吗?都是6位数字?那些是数字或整数必须用逗号分隔。你有这4组数字:245 289 252 722你怎么知道这是两个6位数字,而不是一个3位数字和一个9位数字?或者四个3位数字。如果数字大小不一,就不可能分辨出一个数字的结束和下一个数字的开始。我假设一个空格代表一个数字的结尾。如果不是这样,这可能是不可能解决的。@PatrickPangilinan不是问题。如果这解决了你的问题,你应该把它标记为答案。否则,您的问题将继续出现在未回答的问题提要中。
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]