zoukankan      html  css  js  c++  java
  • 在sql语句中使用 xml for path 格式化字符串的方法总结

    此方法实现的是将查询表中的某个字段,格式化成  字符串1,字符串2,字符串3...的格式

    假设我们现在有两个表 分别是 分组表 grouped和分组成员表 groupuser 

    grouped表有连个字段 id ,groupname

    groupuser表有id,groupid,userid,username 四个字段

    两个表存储的是每一个分组下,对应的成员都有谁

    分组表
    id groupname
    group1 科研小组
    group2 审计小组

     

    分组成员表
    id groupid  userid  username
    1 group1 userid1 用户1
    2 group1 userid3 用户3

    查询的结果是查出来科研小组中成员的名字,名字用逗号分隔。

    查询的方法1

    select UserName+',' FROM dbo.groupuser WHERE groupID='group1' FOR XML PATH('')

    查询结果是:“用户1,用户3,“

    可是我们的要求是最后的一个逗号要去掉,这个时候其实就是处理字符串了,方法有很多,比如使用substring()函数,将最后一个逗号去掉,要使用此方法,我们就得指标这个字符串的长度,使用sql中的len()函数即可,但是这样多查询了一步,有没有什么更简单的方法呢?

    经过测试,笔者发现了一种方法:

    select stuff((SELECT ','+UserName FROM groupuser WHERE [groupID]='group1' FOR XML PATH('')),1,1,'') 

    这样,我们起初在格式化查询结果的时候,将逗号放到名字的左边,结果是 “,用户1,用户3“

    这样我们只需要将字符中的第一个字符替换为空就行了,这个处理起来就简单多了。不需要计算长度,省去了一步查询,查询效率上也会提高。

    如果有什么更好的方法,欢迎在讨论区讨论。大家讨论技术,共同成长。

  • 相关阅读:
    查询SQL数据库中表占用资源情况的语句
    修改VMware网卡MAC的方法
    Ajax 与 .net Validator
    控件属性值绑定到数据
    一个设计的小例子警察抓小偷
    加密Web.config 文件中的敏感信息
    VS .Net 2005程序集换名之后的遗留问题
    为ASP.Net 创建和配置应用程序服务数据库
    ArcGIS 9.0 在Windows XP SP2 上安装的问题(数据保护造成的)
    使用客户端脚本
  • 原文地址:https://www.cnblogs.com/kdkler/p/6165044.html
Copyright © 2011-2022 走看看