zoukankan      html  css  js  c++  java
  • SQLServer中sql for xml path 的用法

    我们通常需要获取一个多行的某个字段拼出的字符串,我们可以使用for xml path进行处理;下面将介绍for xml path的具体用法;

    创建测试表&插入测试数据

    在数据库中新增测试表

    CREATE TABLE MyTest(
      UserName VARCHAR(50),
      Email VARCHAR(100)
    )

    插入测试数据

    INSERT INTO MyTest
            ( UserName, Email )
    VALUES  ( '张三', -- UserName - varchar(50)
              'zhangsan@163.com'  -- Email - varchar(100)
              )
    INSERT INTO MyTest
            ( UserName, Email )
    VALUES  ( '李四', -- UserName - varchar(50)
              'lisi@163.com'  -- Email - varchar(100)
              )
    View Code

    数据库有如下两条数据

    for xml path使用

    普通用法

    创建根节点为user的xml

    SELECT UserName ,
    Email FROM MyTest FOR XML PATH('User')

    运行结果:

    <User>
      <UserName>张三</UserName>
      <Email>zhangsan@163.com</Email>
    </User>
    <User>
      <UserName>李四</UserName>
      <Email>lisi@163.com</Email>
    </User>

    自定义节点名称

    给对应的字段取别名即可,如下将UserName取别名为MyUser

    SELECT UserName AS MyUser ,
    Email  FROM MyTest FOR XML PATH('User')

    运行结果

    <User>
      <MyUser>张三</MyUser>
      <Email>zhangsan@163.com</Email>
    </User>
    <User>
      <MyUser>李四</MyUser>
      <Email>lisi@163.com</Email>
    </User>

    将字段作为xml的属性

     可在查询时 别名用 as '@..' 如'@value'

    SELECT UserName AS '@UserName' ,
    Email AS '@Email'  FROM MyTest FOR XML PATH('User')

    运行结果

    <User UserName="张三" Email="zhangsan@163.com" />
    <User UserName="李四" Email="lisi@163.com" />

    行转列拼接字符串

    如将所有姓名拼接为,隔开的字符串

    SELECT UserName+',' FROM MyTest FOR XML PATH('')

    结果

    张三,李四,

    这里多了一个,需要再次加工处理一下,通过处理字符串将最后一个逗号去掉即可,可通过SQL中的left函数处理,这里不做介绍;

    具体用法可参考我的另一篇文章----SQL Server 中截取字符串常用的函数

  • 相关阅读:
    linux 数组与循环结构
    .NET 中将Excel 文件导入到SQLSERVER
    android 开源项目列表
    [转]PS开源项目 研究NHibernate最好实例
    asp.net mvc3 使用FckEditor 编辑内容
    asp.net mvc3 自定义 AuthorizeAttribute
    asp.net mvc3 上传图片
    Repository 模式
    [转]Remix Australia 上的 Virtual Earth ASP.NET Control 预览
    asp.net mvc 3 简单缓存+sql依赖
  • 原文地址:https://www.cnblogs.com/yx007/p/5688770.html
Copyright © 2011-2022 走看看