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

效果:

 

 语句代码:

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 @ 2023-03-01 16:02  阿尔叶  阅读(767)  评论(0编辑  收藏  举报