灵活运用 SQL SERVER FOR XML PATH

SAP License:SAP会计凭证抬头的字段状态控制 FI模块的同事一般都知道在FI中有个字段状态变式,可以控制在凭证输入时哪些字段是必输、哪些可选哪些隐藏,但这只对凭证行项目中有效,你是否想过对于凭证抬头的字段是哪控制呢? 在中国,会计附件上都要带一个附件张数字段,但SAP的默认配置中没有这一字段,并非SAP没有设置此字段,而是我们没有配置这一字段。如果需要在凭证输入时放出分支号(BRNCH)、附件页数(NUMPG)等字段,在个人参数文件中加入参数CSF,参数值AR,即可。如下图: 实际上,这是对凭证国家的一个设置,在SAP中,配置了AR这个国家.. 阅读详情

原文地址:http://www.cnblogs.com/doubleliang/archive/2011/07/06/2098775.html

 

FOR XML PATH 有的人可能知道有的人可能不知道,其实它就是将查询结果集以XML形式展现,有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数活存储过程来完成的工作。那么以一个实例为主.

一.FOR XML PATH 简单介绍

那么还是首先来介绍一下FOR XML PATH ,假设现在有一张兴趣爱好表(hobby)用来存放兴趣爱好,表结构如下:

接下来我们来看应用FOR XML PATH的查询结果语句如下:

SELECT * FROM @hobby FOR XML PATH

结果:

复制代码
< row >
< hobbyID > 1 </ hobbyID >
< hName > 爬山 </ hName >
</ row >
< row >
< hobbyID > 2 </ hobbyID >
< hName > 游泳 </ hName >
</ row >
< row >
< hobbyID > 3 </ hobbyID >
< hName > 美食 </ hName >
</ row >
复制代码

由此可见FOR XML PATH 可以将查询结果根据行输出成XML各式!

那么,如何改变XML行节点的名称呢?代码如下:

SELECT * FROM @hobby FOR XML PATH( ' MyHobby ' )

结果一定也可想而知了吧?没错原来的行节点<row> 变成了我们在PATH后面括号()中,自定义的名称<MyHobby>,结果如下:

复制代码
< MyHobby >
< hobbyID > 1 </ hobbyID >
< hName > 爬山 </ hName >
</ MyHobby >
< MyHobby >
< hobbyID > 2 </ hobbyID >
< hName > 游泳 </ hName >
</ MyHobby >
< MyHobby >
< hobbyID > 3 </ hobbyID >
< hName > 美食 </ hName >
</ MyHobby >
复制代码

这个时候细心的朋友一定又会问那么列节点如何改变呢?还记的给列起别名的关键字AS吗?对了就是用它!代码如下:

SELECT hobbyID as ' MyCode ' ,hName as ' MyName ' FROM @hobby FOR XML PATH( ' MyHobby ' )

那么这个时候我们列的节点名称也会编程我们自定义的名称 <MyCode>与<MyName>结果如下:
复制代码
< MyHobby >
< MyCode > 1 </ MyCode >
< MyName > 爬山 </ MyName >
</ MyHobby >
< MyHobby >
< MyCode > 2 </ MyCode >
< MyName > 游泳 </ MyName >
</ MyHobby >
< MyHobby >
< MyCode > 3 </ MyCode >
< MyName > 美食 </ MyName >
</ MyHobby >
复制代码
噢! 既然行的节点与列的节点我们都可以自定义,我们是否可以构建我们喜欢的输出方式呢?还是看代码:
SELECT ' [ ' + hName + ' ] ' FROM @hobby FOR XML PATH( '' )

没错我们还可以通过符号+号,来对字符串类型字段的输出格式进行定义。结果如下:

[ 爬山 ][ 游泳 ][ 美食 ]

那么其他类型的列怎么自定义? 没关系,我们将它们转换成字符串类型就行啦!例如:

SELECT ' { ' + STR (hobbyID) + ' } ' , ' [ ' + hName + ' ] ' FROM @hobby FOR XML PATH( '' )

好的 FOR XML PATH就基本介绍到这里吧,更多关于FOR XML的知识请查阅帮助文档!

接下来我们来看一个FOR XML PATH的应用场景吧!那么开始吧。。。。。。

二.一个应用场景与FOR XML PATH应用

首先呢!我们在增加一张学生表,列分别为(stuID,sName,hobby),stuID代表学生编号,sName代表学生姓名,hobby列存学生的爱好!那么现在表结构如下:

这时,我们的要求是查询学生表,显示所有学生的爱好的结果集,代码如下:

复制代码
SELECT B.sName, LEFT (StuList, LEN (StuList) - 1 ) as hobby FROM (
SELECT sName,
(
SELECT hobby + ' , ' FROM student
WHERE sName = A.sName
FOR XML PATH( '' )) AS StuList
FROM student A
GROUP BY sName
) B
复制代码

结果如下:

分析: 好的,那么我们来分析一下,首先看这句:

SELECT hobby + ' , ' FROM student
WHERE sName = A.sName
FOR XML PATH( '' )

这句是通过FOR XML PATH 将某一姓名如张三的爱好,显示成格式为:“ 爱好1,爱好2,爱好3,”的格式!

那么接着看:

复制代码
SELECT B.sName, LEFT (StuList, LEN (StuList) - 1 ) as hobby FROM (
SELECT sName,
(
SELECT hobby + ' , ' FROM student
WHERE sName = A.sName
FOR XML PATH( '' )) AS StuList
FROM student A
GROUP BY sName
) B
复制代码

剩下的代码首先是将表分组,在执行FOR XML PATH 格式化,这时当还没有执行最外层的SELECT时查询出的结构为:

可以看到StuList列里面的数据都会多出一个逗号,这时随外层的语句:SELECT B.sName,LEFT(StuList,LEN(StuList)-1)as hobby 就是来去掉逗号,并赋予有意义的列明!

好啦,太晚啦就说到这里吧!

【mip-NeRF】使用一组二维图像渲染3D场景视频(mip-NeRF论文复现) 本文对mip-NeRF模型的pytorch实现进行了复现 阅读详情

相关推荐

java 二维码生成及其标签打印

本文主要内容 二维码生成 二维码标签预览及打印 二维码生成 笔者此次的二维码是通过调用第三方接口生成的,具体流程如下: 根据规范要求调用第三方接口,返回二维码下载地址及二维码图片的属性值(图片大小等) 根据返回的值获取二维码下载地址,根据地址下载二维码图片,保存至本地磁盘及记录数据信息 扫描二维码跳转相应地址,显示资产的基本信息 最终生成的二维码如下图所示: 预览并批量打印二维码标签 先...

孙小牟的博客 4942

SQLServer出现的问题

SQL Server问题解决方法 问题 解决方法

YYsixsixsix的博客 281

告别Win11睡眠假死:深入解析Modern Standby S0与S3冲突及注册表修复方案

本文深入解析了Windows 11中Modern Standby(S0)与传统睡眠(S3)模式的冲突,该冲突是导致电脑睡眠后出现假死、断网等问题的根源。文章提供了通过修改注册表键值(PlatformAoAcOverride)强制启用稳定S3睡眠的终极修复方案,并附有详细诊断步骤与避坑指南,帮助用户彻底解决睡眠故障。

ol789012的博客 823

灵活运用 SQL SERVER FOR XML PATH

FOR XML PATH 有的人可能知道有的人可能不知道,其实它就是将查询结果集以XML形式展现,有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数或存储过程来完成的工作。那么以一个实例为主.         一.FOR XML PATH 简单介绍

路在何方 1660

AWS入门实践-如何在AWS云上创建一个内外网隔离的生产环境

在 AWS 上建立一个内外网分离的生产环境,可以减少应用服务的暴露面,有效的保证你的应用服务器的安全。通常我们会将web应用放在外网的子网内,数据库服务器等放在内网的子网。我们将按照下图来部署动手实践环境,实现在public subnet的EC2虚拟机可以直接通过互联网可以访问,在Private subnet的EC2虚拟机不能通过互联网直接访问,但是却可以在内部来访问互联网安装应用等等。

weixin_39108752的博客 2995

C语言获取硬件信息(CPU序列号,硬盘序列号,网卡IP、MAC地址、是否插入网线)

本文主要介绍Linux和Windows下使用C语言获取各种硬件信息,包括CPU序列号、硬盘序列号、网卡信息(包括网卡名字、IP地址、MAC地址、网卡是否插入网线等)。

叶落花枯的博客 9379

xml中一些特殊字符的表示

在XML数据中,一些特殊字符必须用转义符号来代替,而回车换行字符就是属于特殊符号。报表XML数据中如果要求文字强制换行,就需要插入回车换行字符。 空格 ( ) Tab ( ) 回车 ( ) 换行 ( ) 单撇号 (&apos;)还要加上双引号才能生效“&apos;” 省略号 "…" 双引号\" 内容 \"   第一行

Jason_Wang的博客 2887

深入NAND Flash信号与接口:结合ONFI 5.0协议,聊聊DBI、ODT和差分信号到底在解决什么实际问题

本文深入探讨了NAND Flash信号与接口设计,结合ONFI 5.0协议,详细解析了DBI、ODT和差分信号等技术如何解决高速数据传输中的信号完整性问题。通过实际案例和数据,展示了这些技术在降低功耗、减少噪声和提升抗干扰能力方面的显著效果,为存储工程师提供了宝贵的实践参考。

weixin_33736649的博客 343

SQL:条件查询&&处理查询结果

问题描述:当执行语句insert into boy(name) values(“最直接的方法就是直接去数据表里”);出现ERROR 1366 (HY000): Incorrect string value: ‘\xE6\x9C\x80\xE7\x9B\xB4…’ for column ‘name’ at row 1 1、查看字符集 mysql&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; show varia

OceanStar的博客 1万+

ROS水下仿真神器uuv_simulator:从零搭建水下机器人测试环境(附Gazebo配置全流程)

本文详细介绍了如何使用ROS和uuv_simulator从零搭建水下机器人仿真测试环境,包括Gazebo配置全流程。通过系统环境准备、水下世界构建、机器人模型定制开发等步骤,帮助开发者在虚拟海洋环境中高效验证算法,大幅降低研发成本。特别适合水下机器人研发人员参考。

ujm5678901的博客 263

轴承故障诊断——领域知识

幅域分析、频域分析及轴承方面的领域知识

qq_58516607的博客 3534

mysql实现for xml_灵活运用 SQL SERVER FOR XML PATH

FOR XML PATH 有的人可能知道有的人可能不知道,其实它就是将查询结果集以XML形式展现,有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数活存储过程来完成的工作。那么以一个实例为主.一.FOR XML PATH 简单介绍那么还是首先来介绍一下FOR XML PATH ,假设现在有一张兴趣爱好表(hobby)用来存放兴趣爱好,表结构如下:接下来我们来看应用FOR XML PATH...

weixin_39622123的博客 977

【Hypermesh】TetraMesh Panel 常用选项详解

结合Hypermesh 2020 帮助文档和自己的一点使用经验,整理了这个博客。

qgm1702的博客 3678

灵活运用 SQL SERVER FOR XML PATH

FOR XML PATH 有的人可能知道有的人可能不知道,其实它就是将查询结果集以XML形式展现,有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数活存储过程来完成的工作。那么以一个实例为主.         一.FOR XML PATH 简单介绍              那么还是首先来介绍一下FOR XML PATH ,假设现在有一张兴趣爱好表(hobby)用来存放兴趣爱好,表结

fengzhilu000【u012761373】 627

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

上一篇: 遍历数据库中的存储过程,触发器
下一篇: SQL SERVER 中如何取年、月、日 -DATEPART函数
CB_CB
博客等级 码龄18年 13粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值