SQL2005中利用xml拆分字符串序列

该问题来自社区提问。

效率不一定很高,但是肯定比替换为select union all好些,起码不用考虑因为字符串过长而导致动态sql语句过长

代码如下:

DECLARE   @str   varchar ( 1000 )
DECLARE   @idoc   int ;
DECLARE   @doc  xml;

 
set   @str = ' 1¦3¦4¦25 '
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
-----------
1
3
4
25
*/
原文地址:https://www.cnblogs.com/cl1024cl/p/6204949.html