4.6.2 分解字符串
分解字符串为行集,是一个与合并行相反的过程,借助xml数据类型方法,分解字符串为行集也是一件比较容易的事。
下面的示例演示如何使用xml类型类型方法来分拆字符串。示例产生定义了一个测试数据,在这个测试数据中,child_ids列包含多个id,每个id以逗号分隔。要求将该列的每个id分拆出来,并与对应的sort_id形成新的记录行。要通过xml类型的方法实现拆分,产生必须将child_ids列值转换为xml数据类型,实现这种转换,笔者使用了字符串处理函数REPLACT实现。需要注意的是,在转换成xml类型的处理中,这里使用了CDATA指令,在本示例中,是否使用CDATA指令并不重要,但在处理复杂的字符串时,CDATA指令是非常重要的,它可以避免字符串中的特殊字符(例如“<”、“>”这类标记符号)对转换的影响。
-- 1. 定义示例数据 DECLARE @tb TABLE( sort_id int, child_ids varchar(max)) INSERT @tb( sort_id, child_ids) SELECT 1, '1,2,4' UNION ALL SELECT 2, '2,34,5,55' -- 2. 将child_ids 中的各id 值分拆为行集 SELECT A.sort_id, B.child_id FROM( SELECT sort_id, child_ids = CONVERT(xml, ' |
上述示例的执行结果如下:
sort_id child_id ----------- ----------- 1 1 1 2 1 4 2 2 2 34 2 5 2 55 (7 行受影响) |
| 回书目 上一节 下一节 |