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”,则中文逗号也会被替换