SQL Server2008中CROSS APPLY的应用范例(三) - 将一个或多个字段内用逗号分隔的内容分成多条记录

SQL Server2008中CROSS APPLY的应用范例(三) - 将一个或多个字段内用逗号分隔的内容分成多条记录


有一个用逗号分隔各元素的字符串,希望能把这个字符串格式化成一个记录

一、每个元素一行

SELECT B.* FROM (SELECT [value] = CONVERT(XML , '<v>' + REPLACE('1,2,3,长沙,2,3,4,广州,2015-12-15' , ',' , '</v><v>') + '</v>')) A 
CROSS APPLY (SELECT 
[From] = N.v.value('.' , 'varchar(100)') FROM A.[value].nodes('/v') N ( v ) ) B;

二、每个元素一列

SELECT B.* FROM (SELECT [value] = CONVERT(XML , '<v>' + REPLACE('1,2,3,长沙,2,3,4,广州,2015-12-15' , ',' , '</v><v>') + '</v>')) A 
CROSS APPLY (SELECT 
[FromProvince] = A.[value].value('v[1]', 'nvarchar(100)'),
[FromCity] = A.[value].value('v[2]', 'nvarchar(100)'), 
[FromDistrict] = A.[value].value('v[3]', 'nvarchar(100)'),
[From] = A.[value].value('v[4]', 'nvarchar(100)'),
[ToProvince] = A.[value].value('v[5]', 'nvarchar(100)'),
[ToCity] = A.[value].value('v[6]', 'nvarchar(100)'),
[ToDistrict] = A.[value].value('v[7]', 'nvarchar(100)'),
[To] = A.[value].value('v[8]', 'nvarchar(100)'), 
[ToTime] = A.[value].value('v[9]', 'nvarchar(100)')) B;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值