SQL SERVER 2005中利用XML对字符串拆分的方法
2015-11-26 09:34
525 查看
1、常规方法(可运用于SQL SERVER 2000中)
DECLARE @str varchar(1000) DECLARE @idoc int; DECLARE @doc xml;
set @str='aaa,bbb,ccc' set @doc=cast('<Root> <item><ID>'+replace(@str,',',' </ID></item><item><ID>')+'</ID></item></Root>' as xml) EXEC sp_xml_preparedocument @Idoc OUTPUT, @doc
SELECT * FROM OPENXML (@Idoc, '/Root/item',2) WITH ( [ID] varchar(10) ) /**//* ID ----------- aaa
bbb
ccc
*/
2、运用SQL SERVER 2005 中的新类型xml
代码
DECLARE @str VARCHAR(1000) DECLARE @x xml SET @str='aaa,bbb,ccc' SELECT id FROM (SELECT [value] = CONVERT(XML , '<v>' + REPLACE(@str , ',' , '</v><v>')+ '</v>') ) A OUTER APPLY ( SELECT id = N.v.value('.' , 'varchar(100)') FROM A.[value].nodes('/v') N (v) ) B
其实第二种与第三种是一样的,只不过第二种用了一个中间变量来处理
DECLARE @str varchar(1000) DECLARE @idoc int; DECLARE @doc xml;
set @str='aaa,bbb,ccc' set @doc=cast('<Root> <item><ID>'+replace(@str,',',' </ID></item><item><ID>')+'</ID></item></Root>' as xml) EXEC sp_xml_preparedocument @Idoc OUTPUT, @doc
SELECT * FROM OPENXML (@Idoc, '/Root/item',2) WITH ( [ID] varchar(10) ) /**//* ID ----------- aaa
bbb
ccc
*/
2、运用SQL SERVER 2005 中的新类型xml
代码
DECLARE @str VARCHAR(1000) DECLARE @x xml SET @str='aaa,bbb,ccc' SELECT id FROM (SELECT [value] = CONVERT(XML , '<v>' + REPLACE(@str , ',' , '</v><v>')+ '</v>') ) A OUTER APPLY ( SELECT id = N.v.value('.' , 'varchar(100)') FROM A.[value].nodes('/v') N (v) ) B
其实第二种与第三种是一样的,只不过第二种用了一个中间变量来处理
相关文章推荐
- oracle表空间使用率查询
- Oracle数据文件/控制文件/日志文件
- oracle执行计划sql
- SQL Server 遇到 Automation服务器不能创建对象
- SQL语句的执行顺序
- Mysql查看版本号的五种方式介绍
- 数据库:变量 运算符
- 关于navicat for oracle 无法连接oracle11g的解决办法
- oracle数据库字符集的修改
- [Rman]Oracle 11g控制文件延迟自动备份
- 解决Maven不能下载“oracle、aspectjweaver、com.springsource.net.sf.cglib”jar
- 关系型数据库与NoSQL数据库
- mysql表修改
- mysql表修改
- SQL 提示介绍 hash/merge/concat union
- memcached简单分析
- MySQL中UPDATE语句使用的实例教程
- 不停止 MySQL 服务增加从库的两种方式
- haproxy+mysql+主从监控检测脚本
- 【leetcode】Combine Two Tables (MySQL)