当前位置:  数据库>sqlserver

把一个字段内用逗号分隔的内容分成多条记录的sql代码

    来源: 互联网  发布时间:2014-08-29

    本文导语:  要求: 把一串以分割符字符串数据放到一个字段,不能在客户端处理拆分,那么如何在SQL SERVER 2008 中用sql语句解决呢? 方法1:使用 SQL SERVER XML   代码如下: ----> 生成测试数据: @T DECLARE @T TABLE (id INT,Col1  VARCHAR(50),Col2 VARCHAR(...

要求:
把一串以分割符字符串数据放到一个字段,不能在客户端处理拆分,那么如何在SQL SERVER 2008 中用sql语句解决呢?

方法1:使用 SQL SERVER XML
 

代码如下:

----> 生成测试数据: @T
DECLARE @T TABLE (id INT,Col1  VARCHAR(50),Col2 VARCHAR(50))
INSERT INTO @T
SELECT 1,'卸货费','运输车队业务, 客服接单业务'
UNION ALL
SELECT 2,'报关费','报关业务、客服接单业务'

----SQL查询如下:
SELECT
    T.id,
    A.x.value('.','varchar(10)') AS code,
    B.x.value('.','varchar(10)') AS code2
FROM (
    SELECT *,doc = CONVERT(xml,''+REPLACE(code,',','')+''),
         doc2=CONVERT(xml,''+REPLACE(code2,',','')+'')
    FROM @T
) AS T
    CROSS APPLY doc.nodes('//v') AS A(x)
    CROSS APPLY doc2.nodes('//v') AS B(x)

方法2:使用 SQL SERVER WITH 递归查询
 

代码如下:
WITH  roy
      AS ( SELECT   Col1 ,
                   COl2 = CAST(LEFT(Col2, CHARINDEX(',', Col2 + ',') - 1) AS NVARCHAR(100)) ,
                   Split = CAST(STUFF(COl2 + ',', 1,
                                    CHARINDEX(',', Col2 + ','), '') AS NVARCHAR(100))
         FROM     Tab
         UNION ALL
         SELECT   Col1 ,
                   COl2 = CAST(LEFT(Split, CHARINDEX(',', Split) - 1) AS NVARCHAR(100)) ,
                    Split = CAST(STUFF(Split, 1, CHARINDEX(',', Split), '') AS NVARCHAR(100))
            FROM     Roy
            WHERE    split > ''
             )
    SELECT  COl1 ,
             COl2
     FROM    roy
     ORDER BY COl1
OPTION  ( MAXRECURSION 0 )
结果:

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Mysql设置查询条件(where)查询字段为NULL
  • RESIN做服务器,从数据库里提取字段值,页面输出顺序必须与字段顺序一致吗?
  • TCP协议报头字段详解及报头图
  • sql添加字段与刪除字段的方法
  • ORACLE数据库常用字段数据类型介绍
  • 太奇怪了,jsp中的rs数据集其他的字段都能取出来,但就是有一两个字段取不出来,这是为什么?
  • SQL字符型字段按数字型字段排序实现方法
  • 类的方法和实例方法,类字段和实例字段有什么不同,在使用上?
  • mysql 增加修改字段类型及删除字段类型
  • 在Java中,用Mircosoft SQL Server数据库,请问要进行日期字段的读取,用( ResultSet rs ; rs.getDate(1),其中1代表相应的字段为 DateTi
  • sk_buff中重复字段的区别及data数据字段请教
  • Sql添加删除字段,判断字段是否存在的方法示例
  • sql server中添加字段、删除字段、修改字段说明
  • 如何将数据库表中每个字段的字段描述在JSP文件中显示出来?
  • 为什么我从数据库中取记录时最多只取两个字段,多于三个字段则报错
  • php中单个数据库字段多列显示(单字段分页、横向输出)
  • mysql把一个表某个字段的内容复制到另一张表的某个字段的SQL语句写法
  • Oracle 查询表信息获取表字段及字段注释
  • 数据库递增字段的问题。
  • 谁能给我一个PipedInputStream and PipedOutputStream 怎么用的例子,我想用数据库image字段对另一个imaeagezi字段
  • Jbuilder中字段显示问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3