sql server某列根据逗号转多行,其它字段不变

效果:

 

 语句代码:

1
2
3
4
5
6
7
8
9
10
11
12
declare @moulds varchar(4000);
set @moulds='55-480730-03,55-487780-01,,55-487780-02 ';
declare @table1 table(col1 nvarchar(4000),col2 varchar(10));
declare @table2 table(col1 nvarchar(40),xmlval1 xml);
insert into @table1 values(replace(@moulds, char(13)+char(10), ''),'a');
--原始结果集
select * from @table1
--处理后结果集
select  rtrim(ltrim(replace(bs.v1, char(9), '') )) col1,a.col2
from (select convert(xml, concat('<n>',replace(col1 COLLATE Chinese_PRC_CS_AS_WS, ',', '</n><n>'),'</n>')) as xmlval1,col2 from @table1) a
cross apply(select k.n.value('.', 'nvarchar(80)') v1 from a.xmlval1.nodes('n') k(n) ) bs
where bs.v1 !='';

题外话,区分大小写处理说明:在指定字段后面加上 COLLATE Chinese_PRC_CS_AS_WS

如下示例,如果不加“COLLATE Chinese_PRC_CS_AS_WS”,则中文逗号也会被替换

 

posted @   阿尔叶  阅读(786)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示