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”,则中文逗号也会被替换
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~