zoukankan      html  css  js  c++  java
  • sqlserver 拆分

    有表tb, 如下:
    id value
    ----------- -----------
    1 aa,bb
    2 aaa,bbb,ccc
    欲按id,分拆value列, 分拆后结果如下:
    id value
    ----------- --------
    1 aa
    1 bb
    2 aaa
    2 bbb
    2 ccc


    --方法1.使用xml完成
    SELECT A.id, B.value FROM
    (
    SELECT id, [value] = CONVERT(xml,'<root><v>' + REPLACE([value], ',', '</v><v>') + '</v></root>') FROM tb
    ) A OUTER APPLY
    (
    SELECT value = N.v.value('.', 'varchar(100)') FROM A.[value].nodes('/root/v') N(v)
    ) B

    --方法2.使用CTE完成
    ;with tt as
    (select id,[value]=cast(left([value],charindex(',',[value]+',')-1) as nvarchar(100)),Split=cast(stuff([value]+',',1,charindex(',',[value]+','),'') as nvarchar(100)) from tb
    union all
    select id,[value]=cast(left(Split,charindex(',',Split)-1) as nvarchar(100)),Split= cast(stuff(Split,1,charindex(',',Split),'') as nvarchar(100)) from tt where split>''
    )
    select id,[value] from tt order by id option (MAXRECURSION 0)


    DROP TABLE tb

  • 相关阅读:
    伍佰《突然的自我》
    .NET常见ORM框架
    并发和压测工具
    底层源码调试工具
    c 冒泡排序
    c 指定范围的质数
    c 筛法列举质数
    c 牛顿法求方程近似解
    c 二分法求方程近似解
    css选择器 及其权重
  • 原文地址:https://www.cnblogs.com/jayblog/p/9317796.html
Copyright © 2011-2022 走看看