Tsql 如何使用SQL Server将数字之间的空格替换为逗号?
原始结果:245 289 252 722 265420 22791 23482 24662Tsql 如何使用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
需要结果: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]