SQL FOR XML子句的各种用法-阿里云开发者社区

开发者社区> 清山> 正文

SQL FOR XML子句的各种用法

简介:
+关注继续查看
FOR XML子句有四种最基本的模式 
1、AUTO模式:返回数据表为起表名的元素,每一列的值返回为属性;
2、RAW模式:返回数据行为元素,每一列的值作为元素的属性; 
3、PATH模式:通过简单的XPath语法来允许用户自定义嵌套的XML结构、元素、属性值 
4、EXPLICIT模式:通过SELECT语法定义输出XML的结构
第1步:构造测试数据表及填充数据: 
--1.建表语句 
CREATE TABLE [dbo].[Users](
   [UserID] [int] IDENTITY(1,1) NOT NULL, 
   [FirstName] [nvarchar](50) NULL,
   [LastName] [nvarchar](50) NULL
         )  
--2.产生随机数SQL函数

CREATE FUNCTION [GenerateRandomItem] ( @LENGTH INT )
RETURNS NVARCHAR(255)
AS 
    BEGIN  
	--申明变量
        DECLARE @RandomNumber NVARCHAR(255)
        DECLARE @I SMALLINT
        DECLARE @RandNumber FLOAT
        DECLARE @Position TINYINT
        DECLARE @ExtractedCharacter VARCHAR(1)
        DECLARE @ValidCharacters VARCHAR(255)
        DECLARE @VCLength INT    
    --给变量赋值
        SET @ValidCharacters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'    
        SET @VCLength = LEN(@ValidCharacters)
        SET @ExtractedCharacter = ''
        SET @RandNumber = 0
        SET @Position = 0
        SET @RandomNumber = '' 
        
        SET @I = 1 
        WHILE @I < ( @Length + 1 ) 
            BEGIN 
                SET @RandNumber = (SELECT RandNumber FROM [RandNumberView])
                SET @Position = CONVERT(TINYINT, ( ( @VCLength - 1 )* @RandNumber + 1 ))
                SELECT  @ExtractedCharacter = SUBSTRING(@ValidCharacters,@Position, 1)
                SET @I = @I + 1
                SET @RandomNumber = @RandomNumber + @ExtractedCharacter
            END
        RETURN @RandomNumber
    END
GO
CREATE VIEW [RandNumberView]
AS  
SELECT  RAND() AS [RandNumber]
--3.添加测试数据
INSERT INTO Users  
        (   
          FirstName ,  
          LastName   
        )  
SELECT  
dbo.GenerateRandomItem(10),  
dbo.GenerateRandomItem(10)     
GO 10
--4.测试查询


1.AUTO模式:

语句: SELECT UserID, FirstName,LastName FROM users FOR XML AUTO, XMLSCHEMA

说明:加上XMLSCHEMA,输出xml架构,不加则只输出数据。

输出:


2.RAW模式: 

语句:SELECT UserID, FirstName,LastName FROM users FOR XML RAW ('MyUsers')

说明:将元素命名为自定义的名称

输出:


3.PATH模式:

语句: SELECT UserID "@ID", FirstName "Name/FirstName",LastName "Name/LastName" FROM usersFOR XML PATH ('MyUsers')

说明:可以指定xml结构

输出:


4.EXPLICIT模式:(研究中,暂略... ... )



版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【转载】format的用法。
以前没太注意这个用法,到网上找一个,copy过来,方便以后的查看。   "I see stuff like {0,-8:G2} passed in as a format string. What exactly does that do?" -- Very Confused String Fo...
716 0
SQL优化常用方法1
选用适合的ORACLE优化器
885 0
SQL中 patindex函数的用法
原文:SQL中 patindex函数的用法 语法格式:PATINDEX ( '%pattern%' , expression )     返回pattern字符串在表达式expression里第一次出现的位置,起始值从1开始算。
1456 0
WPF中StringFormat的用法--显示特定位数的数字
原文:WPF中StringFormat的用法--显示特定位数的数字 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huangli321456/article/details/80324458 ...
936 0
SQL中CONVERT转化函数的用法
来自博客园http://www.cnblogs.com/xionglee/articles/1444916.html 格式:CONVERT(data_type,expression[,style])说明:此样式一般在时间类型(datetime,smalldatetime)与字符串类型(nchar,nvarchar,char,varchar)相互转换的时候才用到. 注意:时间日期类型转换以后的结果是字符串。
669 0
sql datalength与len区别用法
原文:sql datalength与len区别用法 len ( string_expression )参数:要计算的字符串 len() 函数len 函数返回文本字段中值的长度。 sql len() 语法select len(column_name) from table_name 我们希望取得 "city" 列中值的长度。
633 0
+关注
404
文章
3
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载