zoukankan      html  css  js  c++  java
  • 有规律字段拆分(2005的解决方案)

    问题描述:

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

    –1. 旧的解决方法
    Select TOP 8000
        id = IDENTITY(int, 1, 1)
    INTO #
    FROM syscolumns a, syscolumns b
    Select
        A.id,
        SUBSTRING(A.[values], B.id, CHARINDEX(‘,’, A.[values] + ‘,’, B.id) – B.id)
    FROM tb A, # B
    Where SUBSTRING(‘,’ + A.[values], B.id, 1) = ‘,’

    Drop TABLE #

    – 2. 在SQL Server2005中使用的方法如下:
    – 示例数据

    DECLARE @t TABLE(id int, [values] varchar(100))
    Insert @t Select 1, ‘aa,bb’
    UNION ALL Select 2, ‘aaa,bbb,ccc’
    – 查询处理
    Select
        A.id, B.value
    FROM(
        Select id, [values] = CONVERT(xml,
                ’<root><v>’ + REPLACE([values], ‘,’, ‘</v><v>’) + ‘</v></root>’)
        FROM @t
    )A
    OUTER APPLY(
        Select value = N.v.value(‘.’, ‘varchar(100)’)
        FROM A.[values].nodes(‘/root/v’) N(v)
    )B
    /*–结果
    id          value
    ———– ——–
    1           aa
    1           bb
    2           aaa
    2           bbb
    2           ccc
    (5 行受影响)
    –*/

  • 相关阅读:
    Niginx 集群负载均衡策略
    饿了吗开源组件库Element模拟购物车系统
    HTML5随记
    Javascript基础
    Javascript封装弹出框控件
    sublime插件(配合nodejs环境)
    使用Java注解开发自动生成SQL
    Java实现多线程下载
    开发工具随记
    开发工具的安装及环境搭建
  • 原文地址:https://www.cnblogs.com/Gaojier/p/2783577.html
Copyright © 2011-2022 走看看