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 usersFOR 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模式:(研究中,暂略... ... )



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值