SQL中如何使用FOR XML PATH合并行数据?(二)

简介: SQL数据库开发

具体实际应用

我们现在想把上面的学生表里每个学生的爱好单独显示一行,爱好用"、"隔开。59.png

见证奇迹的时刻到了!!!

60.jpg

对比我们先前建的表,这里已经将Hobby列的数据按每个学生变成了一行。


上面的WHERE条件是必须要的,如果去掉会怎么样呢?我们把WHERE条件注释掉看看会怎么样?

61.png


结果如下:

62.jpg

就会将Hobby列所有值都显示出来,很显然这不是我们要的结果


代码优化

不知道小伙伴们有没有发现Hobby列的结果尾部多了一个"、",看着好别扭,有没有什么办法将它去掉呢?答案是肯定的。

先用一个LEFT()和LEN()函数来处理一下Hobby列

63.png

结果如下:

64.jpg

这样我们的需求就得到了完美解决,但是这个代码有点长额,能不能简短一点呀?答案也是肯定滴!在将代码精简之前,我们需要先给大家介绍一个新的函数:STUFF()

STUFF()函数的作用

STUFF()函数用于删除指定长度的字符,并可以在指定的起点处插入另一组字符。STUFF()函数中如果开始位置或长度值是负数,或者如果开始位置大于第一个字符串的长度,将返回空字符串。如果要删除的长度大于第一个字符串的长度,将删除到第一个字符串中的第一个字符。

STUFF()函数的语法

STUFF ( character_expression , start , length ,character_expression )

参数解释

character_expression:一个字符数据表达式。character_expression 可以是常量、变量,也可以是字符列或二进制数据列。

start :一个整数值,指定删除和插入的开始位置。如果 start 或 length 为负,则返回空字符串。如果 start 比第一个 character_expression 长,则返回空字符串。start 可以是 bigint 类型。

length:一个整数,指定要删除的字符数。如果 length 比第一个 character_expression 长,则最多删除到最后一个 character_expression 中的最后一个字符。length 可以是 bigint 类型。

返回类型

如果 character_expression 是受支持的字符数据类型,则返回字符数据。如果 character_expression 是一个受支持的 binary 数据类型,则返回二进制数据。

注意事项

1、如果开始位置或长度值是负数,或者如果开始位置大于第一个字符串的长度,将返回空字符串。如果要删除的长度大于第一个字符串的长度,将删除到第一个字符串中的第一个字符。

2、如果结果值大于返回类型支持的最大值,则产生错误。


这定义看的头晕,我们还是来看看怎么使用吧

实例:

65.png


说了这么多,我们看看STUFF怎么解决我们上面的问题吧

66.png

是不是比LEFT简短一些啦?我们看一下结果是不是我们想要的。

67.jpg

完美!


好了,FOR XML PATH就介绍到这里了,小伙伴可以对比以上两种优化的方法,自行比较哪种方式更加简单易懂。

相关文章
|
7月前
|
SQL 人工智能 JSON
Flink 2.1 SQL:解锁实时数据与AI集成,实现可扩展流处理
简介:本文整理自阿里云高级技术专家李麟在Flink Forward Asia 2025新加坡站的分享,介绍了Flink 2.1 SQL在实时数据处理与AI融合方面的关键进展,包括AI函数集成、Join优化及未来发展方向,助力构建高效实时AI管道。
1003 43
|
7月前
|
SQL 人工智能 JSON
Flink 2.1 SQL:解锁实时数据与AI集成,实现可扩展流处理
本文整理自阿里云的高级技术专家、Apache Flink PMC 成员李麟老师在 Flink Forward Asia 2025 新加坡[1]站 —— 实时 AI 专场中的分享。将带来关于 Flink 2.1 版本中 SQL 在实时数据处理和 AI 方面进展的话题。
447 0
Flink 2.1 SQL:解锁实时数据与AI集成,实现可扩展流处理
|
8月前
|
SQL
SQL如何只让特定列中只显示一行数据
SQL如何只让特定列中只显示一行数据
|
5月前
|
XML 数据采集 API
用Lxml高效解析XML格式数据:以天气API为例
免费Python教程:实战解析中国天气网XML数据,详解Lxml库高效解析技巧、XPath用法、流式处理大文件及IP封禁应对策略,助你构建稳定数据采集系统。
334 0
|
9月前
|
XML 存储 数据格式
抖音卡片链接生成器,xml卡片数据支持快手,通过XPOSED实现制作
本项目介绍抖音/快手卡片链接生成技术,包含技术原理与核心功能实现。通过Xposed框架Hook目标APP关键方法,自定义卡片生成与跳转逻辑。卡片数据以XML格式存储,便于解析和跨平台使用。提供完整代码示例,涵盖Xposed模块配置、XML数据结构、Hook实现及卡片生成器核心类。下载地址:https://www.pan38.com/share.php?code=DuNzA,提取码:8888(仅供学习参考)。
|
8月前
|
SQL
SQL中如何删除指定查询出来的数据
SQL中如何删除指定查询出来的数据
|
8月前
|
SQL 关系型数据库 MySQL
SQL如何对不同表的数据进行更新
本文介绍了如何将表A的Col1数据更新到表B的Col1中,分别提供了Microsoft SQL和MySQL的实现方法,并探讨了多表合并后更新的优化方式,如使用MERGE语句提升效率。适用于数据库数据同步与批量更新场景。
|
9月前
|
SQL DataWorks 数据管理
SQL血缘分析实战!数据人必会的3大救命场景
1. 开源工具:Apache Atlas(元数据管理)、Spline(血缘追踪) 2. 企业级方案:阿里DataWorks血缘分析、腾讯云CDW血缘引擎 3. 自研技巧:在ETL脚本中植入版本水印,用注释记录业务逻辑变更 📌 重点总结:
|
SQL JSON 数据库
influxdb 端点使用http进行sql查询,写数据
influxdb 端点使用http进行sql查询,写数据
1083 0
|
SQL 数据挖掘 数据库
SQL查询每秒的数据:技巧、方法与性能优化
id="">SQL查询功能详解 SQL(Structured Query Language,结构化查询语言)是一种专门用于与数据库进行沟通和操作的语言