34,576
社区成员
发帖
与我相关
我的任务
分享
例如我有一个字符串 '123456789' 我想将其处理为 '1,2,3,4,5,6,7,8,9' 这个格式, 请问可以用什么方法或者函数处理呢?
DECLARE @s VARCHAR(MAX)
SET @s='123456789'
SELECT STUFF(
(SELECT ','+SUBSTRING(@s,number,1) FROM MASTER.dbo.spt_values AS s WHERE s.type='P' AND s.number>0 AND s.number<=LEN(@s)
FOR XML PATH(''))
,1,1,'')
/*
1,2,3,4,5,6,7,8,9
*/
string .for char = string[i]
stringbuild str = new stringbuild()
srt.append(char).append(",)
walk the string,然后使用 string_agg 拼接字符串
假设有一个序号表 serial,字段 id,值是 1~n(n 取大一点,超过最大字符串长度即可)
select col, string_agg(substr, ',') concat
from
(-- 全连接,字符串转单个字符
select t1.col, substring(t1.col, t2.id, 1) substr
from
(select '123456789' col) t1, serial t2
where t2.id between 1 and len(t1.col)
) t
group by col