知方可补不足~SQL巧用XML PATH来生成符合规则的查询结果集

简介:

在查询后面在

FOR XML PATH可以生成XML格式结果集,好好利用这个技术,可以实现很多意想不到的查询效果

最简单的用法:

SELECT USERID,USERNAME FROM DBO.USER_INFO FOR XML PATH

结果类似这样

<row>
  <USERID>6</USERID>
  <USERNAME>ding25901</USERNAME>
</row>
<row>
  <USERID>10</USERID>
  <USERNAME>zhong</USERNAME>
</row>
<row>
  <USERID>11</USERID>
  <USERNAME>yanxunhan</USERNAME>
</row>

我们看到是以XML格式来显示的,注意它是个字符串,它只显示在一行上。

可以为path加个参数,来改变row节点的名称,如

SELECT USERID,USERNAME FROM DBO.USER_INFO FOR XML PATH('zzl')

结果变成了这样

<zzl>
  <USERID>6</USERID>
  <USERNAME>ding25901</USERNAME>
</zzl>
<zzl>
  <USERID>10</USERID>
  <USERNAME>zhong</USERNAME>
</zzl>

当然,发挥我们的想像力,可能也会出现这种结果

{6,ding25901}{10,zhong}

怎么样,有点像JSON的格式标准吧,看看代码:

SELECT TOP 2
        '{' + CAST(UserID AS VARCHAR) + ',' ,
        userName + '' ,
        '}'
FROM    dbo.User_Info
FOR     XML PATH('')

只要发挥你的想像力,就有你想不到的事情发生,如果没有xml path,可能我们还要用性能较低的游标

看看这个例子,找出用户地址表中,所有用户的所有地址信息:

SELECT  B.userid ,
        List
FROM    ( SELECT    userid ,
                    ( SELECT    c.address + ','
                      FROM      dbo.UserAddress c
                      WHERE     c.UserID = a.userid
                    FOR
                      XML PATH('')
                    ) AS List
          FROM      dbo.UserAddress A
          GROUP BY  userid
        ) B

结果是:

userid                               addresslist
------------------------------------ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
010E3E9D-67F5-4C25-80A7-0B56D03F3427 日本,中国,
062061EB-61F2-49A3-AA87-7BD5A59F5970 中国,美国,
1A58A662-A3DF-4BEE-B0D0-B0F73846D55B 中东,

本文转自博客园张占岭(仓储大叔)的博客,原文链接:知方可补不足~SQL巧用XML PATH来生成符合规则的查询结果集,如需转载请自行联系原博主。

目录
相关文章
|
SQL XML Java
解决关于在idea使用Mybatis时, 编写xml的动态sql语句背景高亮不舒服问题
解决关于在idea使用Mybatis时, 编写xml的动态sql语句背景高亮不舒服问题
1557 0
|
5月前
|
XML SQL 数据格式
XML动态sql查询当前时间之前的信息报错
XML动态sql查询当前时间之前的信息报错
60 2
|
4月前
|
SQL XML Java
mybatis :sqlmapconfig.xml配置 ++++Mapper XML 文件(sql/insert/delete/update/select)(增删改查)用法
当然,这些仅是MyBatis功能的初步介绍。MyBatis还提供了高级特性,如动态SQL、类型处理器、插件等,可以进一步提供对数据库交互的强大支持和灵活性。希望上述内容对您理解MyBatis的基本操作有所帮助。在实际使用中,您可能还需要根据具体的业务要求调整和优化SQL语句和配置。
78 1
|
7月前
|
SQL XML 数据库
后端数据库开发高级之通过在xml文件中映射实现动态SQL
后端数据库开发高级之通过在xml文件中映射实现动态SQL
71 3
|
7月前
|
SQL XML Java
后端数据库开发JDBC编程Mybatis之用基于XML文件的方式映射SQL语句实操
后端数据库开发JDBC编程Mybatis之用基于XML文件的方式映射SQL语句实操
88 3
|
8月前
|
XML Java 数据库连接
Mybatis之简介、使用操作(安装、XML、SqlSession、映射的SQL语句、命名空间、作用域和生命周期)
【1月更文挑战第2天】 MyBatis 是一款优秀的持久层框架 MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程 MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 实体类 【Plain Old Java Objects,普通的 Java对象】映射成数据库中的记录。
184 2
Mybatis之简介、使用操作(安装、XML、SqlSession、映射的SQL语句、命名空间、作用域和生命周期)
|
8月前
|
XML SQL Java
springboot 项目启动报Has been loaded by XML or SqlProvider, ignoring the injection of the SQL的错误的解决方案
springboot 项目启动报Has been loaded by XML or SqlProvider, ignoring the injection of the SQL的错误的解决方案
940 0
|
SQL XML Java
【SQL用法】Mybatis框架中的xml文件中经常使用的sql语句
【SQL用法】Mybatis框架中的xml文件中经常使用的sql语句
142 0
|
3月前
|
XML 前端开发 Java
讲解SSM的xml文件
本文详细介绍了SSM框架中的xml配置文件,包括springMVC.xml和applicationContext.xml,涉及组件扫描、数据源配置、事务管理、MyBatis集成以及Spring MVC的视图解析器配置。
99 1
|
5月前
|
XML Java 数据格式
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)
这篇文章是Spring5框架的实战教程,主要介绍了如何在Spring的IOC容器中通过XML配置方式使用外部属性文件来管理Bean,特别是数据库连接池的配置。文章详细讲解了创建属性文件、引入属性文件到Spring配置、以及如何使用属性占位符来引用属性文件中的值。
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)