欧美三区四区_av先锋影音资源站_亚洲第一论坛sis_影音先锋2020色资源网_亚洲精品社区_在线免费观看av网站_国产一区二区伦理_亚洲欧美视频一区二区_99视频精品全部免费在线_精精国产xxxx视频在线

解讀SQLServer2005 XML在T-SQL中的應用_Mssql數(shù)據(jù)庫教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:解析Asp.net編程中的數(shù)組基礎實例學習
Asp.net數(shù)組(Array)可以視為儲存多個數(shù)據(jù)類型相同的值的變量,以同一個變量名稱,不同的索引值來區(qū)分表示多個值。多用來存放性質(zhì)或類型相同的數(shù)據(jù)。 1.數(shù)組的聲明 數(shù)組的聲明有以

以下為引用的內(nèi)容:

*
SQLServer2005 XML在T-SQL查詢中的典型應用

整理:fcuandy
時間:2008.11.7

前言:
此文只講xml數(shù)據(jù)類型及相應的一些操作方法在解決日常T-SQL編程中的一些應用,而避開xml modify,
xml schema,xml索引,命名空間等這些語法性或者生硬的一些問題(這些語法您可以查聯(lián)機叢書),即此文主要
講以xml的一些操作特性及xquery去解決編程問題.

Tags:
xquery ,FLWOR迭帶 ,sql:column ,sql:variable ,nodes ,value ,query ,xpath ,xquery function, if, 聚合函數(shù), xs:function等

典型應用舉例:
*/


--(1)
--====================================================================
--拆分
DECLARE @s VARCHAR(100)
SET @s='a,b,c,dd,ee,f,aa,a,aa,f'

--常規(guī)做法(sql2000常用),以一split函數(shù)拆分串為表類型結構,如
--SELECT * FROM dbo.split(@s,',') a
--當然,也可能是循環(huán)去拆分,或者以一輸助表的identity列利用charindex等函數(shù)拿identity列值與','的位置匹配實現(xiàn)拆分
--這些做法,roy_88及本人以前都整理過,不再累贅,可見推薦貼。即便 是xml法,也貼過多次,下面一筆帶過

--XML做法:
SELECT b.v FROM
(SELECT CAST('<r>' REPLACE(@s,',','</r><r>') '</r>' AS XML) x) a --將字串","換換為"</r><r>"并前后拼上<r>,</r>以用來構造xml串
CROSS APPLY
(SELECT v=t.x.value('.','VARCHAR(10)') FROM a.x.nodes('//r') AS t(x) ) b --使用 xml.nodes函數(shù)將xml串拆分為行
/*
a
b
c
dd
ee
f
aa
a
aa
f
*/


--(2)
--====================================================================
--去重,@s中出現(xiàn)的元素,重復的只要一個,希望結果為 'a,b,c,dd,ee,f'
--常規(guī)做法,循環(huán)或函數(shù),或臨時表拆后distinct
--XML做法:
--a.在(1)的基礎上進行

;WITH fc AS --定義cte命名,將@s轉換為一個表結構
(
SELECT DISTINCT b.v v
FROM
(SELECT CAST('<r>' REPLACE(@s,',','</r><r>') '</r>' AS XML) x) a
CROSS APPLY
(SELECT v=t.x.value('.','VARCHAR(10)') FROM a.x.nodes('//r') AS t(x) ) b
)
--對這個表利用xml方法進行行值拼接
SELECT STUFF(b.v.value('/r[1]','varchar(100)'),1,1,'')
FROM
(SELECT v=(SELECT ',' v FROM fc FOR XML PATH(''),ROOT('r'),TYPE)) b
/*
a,aa,b,c,dd,ee,f
*/

--b FLWOR語句 T-SQL組合:
SELECT STUFF(v,1,1,'') FROM
(SELECT CAST('<r>' REPLACE(@s,',','</r><r>') '</r>' AS XML) x) a
CROSS APPLY
(SELECT x=(SELECT t.x.value('.','varchar(10)') v,idx=ROW_NUMBER() OVER(ORDER BY GETDATE()) FROM a.x.nodes('//r') AS t(x) FOR XML PATH('r'),TYPE)) b --利用row_number得到唯一idx
CROSS APPLY
(SELECT v=CAST(b.x.query('for $r in //r where count(//r[v=$r/v and idx<$r/idx])=0 return concat(",",xs:string($r/v[1]))') AS VARCHAR(MAX))) c --類似count計數(shù)法,取得v相同的節(jié)點集idx值最小的節(jié)點,原型為:
--SELECT * FROM tb a WHERE 1>(SELECT COUNT(*) FROM tb WHERE v=a.v AND id<a.id)
/*
a ,b ,c ,dd ,ee ,aa ,f
*/


--c distinct-values
SELECT REPLACE(v,' ',',') FROM
(SELECT CAST('<r>' REPLACE(@s,',','</r><r>') '</r>' AS XML) x) a
CROSS APPLY
(SELECT CAST(a.x.query('distinct-values(//r)') AS VARCHAR(MAX)) v) b --直接調(diào)用distinct-values函數(shù)來操作
/*
a,b,c,dd,ee,f,aa
*/


-- 導入去重, last() , position()

DECLARE @doc xml
SET @doc ='<?xml version="1.0" encoding="gb2312" ?>
<employees>
<employee>
<empid>e0001</empid>
<name>蕭峰</name>
</employee>
<employee>
<empid>e0002</empid>
<name>段譽</name>
</employee>
<employee>
<empid>e0003</empid>
<name>王語嫣</name>
</employee>
<employee>
<empid>e0003</empid>
<name>張無忌</name>
</employee>
</employees>
'
create table people2
(
personid varchar(10) primary key ,
name varchar(20)
)

INSERT people2
SELECT DISTINCT b.* FROM
(SELECT x = @doc.query('for $e in //employee return //employee[empid = $e/empid][last()]')) a --FLWOR時,用當前節(jié)點去//emploee節(jié)點集中找節(jié)點集中empid等于當前節(jié)點的empid, 在找到的集合中取最后一個利用last()函數(shù)
CROSS APPLY
(SELECT id=t.x.value('empid[1]','varchar(100)'),name=t.x.value('name[1]','varchar(100)') FROM a.x.nodes('//employee') AS t(x)) b

SELECT * FROM people2
/*
e0001 蕭峰
e0002 段譽
e0003 張無忌
*/
GO
drop table people2
GO
--同組一選多,也可應用此方法,不過沒有必要,就不再累贅了。


--(3)
--====================================================================
--列名,列值相關
--a,按行聚合
declare @t table(Sname nvarchar(5), V1 float, V2 float, V3 float, V4 float, V5 float, V6 float)
insert @t select N'張三', 0.11 , 0.21 , 0.29, 0.32 , 0.11, 0.08
insert @t select N'李四', 0.01 , 0.61 , 0.21, 0.73 , 0.21, 0.12
insert @t select N'張五', 0.31 , 0.21 , 0.23, 0.33 , 0.91, 0.65
insert @t select N'張六', 0.59 , 0.11, 0.26, 0.13, 0.01, 0.15

select b.* from
(select x=cast((select * from @t for xml path('r')) as xml)) a
cross apply
(
select name=x.query('./Sname/text()'),v=x.query('max(./*[local-name(.)!="Sname"])') from a.x.nodes('//r') as t(x)
--r為二級節(jié)點(因為文檔本身無根節(jié)點,即為每項的頂級節(jié)點)即為一個r節(jié)點表示一條記錄. r下級節(jié)點,每個表示一個列,因為列名未知,所以用/*匹配所有節(jié)點,因為name為區(qū)別列,不參與聚合運算,故用local-name取得來過濾
) b

/*
張三 0.32
李四 0.73
張五 0.91
張六 0.59
*/

--b ,由值引到取列
if not object_id('T1') is null
drop table T1
GO
Create table T1([tId] int,[tName] nvarchar(4))
Insert T1
select 1,N'zhao' union all
select 2,N'qian' union all
select 3,N'sun'
Go
--> --> 借且(Roy)生成測試數(shù)據(jù)

if not object_id('T2') is null
drop table T2
Go
Create table T2([tId] int,[zhao] nvarchar(1),[qian] nvarchar(1),[sun] nvarchar(1))
Insert T2
select 1,N'a',N'b',N'c' union all
select 2,N'd',N'e',N'f' union all
select 3,N'g',N'h',N'i'
Go


SELECT c.tid,c.tName,v FROM t1 c
CROSS APPLY
(SELECT x=(SELECT * FROM t2 WHERE tid=c.tid FOR XML PATH('r'),TYPE)) a
CROSS APPLY
(SELECT v=t.x.query('./*[local-name(.)=xs:string(sql:column("c.tName")) ]/text()')
FROM a.x.nodes('//r') AS t(x)
) b

/*
1 zhao a
2 qian e
3 sun i
*/


--c, 列名,列值,與系統(tǒng)表

CREATE TABLE tb(f1 INT,f2 INT,x INT,z INT,d INT,ex INT,dd INT,vv INT)
INSERT tb SELECT 1,2,3,5,11,3,2423,33
GO
SELECT * FROM tb
GO
SELECT name,v FROM
( SELECT name FROM sys.columns WHERE object_id=object_id('tb','u') ) a
CROSS JOIN
(SELECT x=(SELECT * FROM tb FOR XML PATH('r'),TYPE)) b
CROSS APPLY
(SELECT v=t.x.query('./*[local-name(.)=xs:string(sql:column("a.name")) ]/text()') FROM b.x.nodes('//r') AS t(x) ) c
/*
f1 1
f2 2
x 3
z 5
d 11
ex 3
dd 2423
vv 33
*/
GO
DROP TABLE tb
GO

--(4)
--一些綜合計算
--以下表 ta.a值 yyyymmdd-yyyymmdd表連續(xù)時間段,","表單個日期
If object_id('ta','u') is not null
Drop table ta
Go
Create table ta(a varchar(100))
Go
Insert into ta
select '1 | |20080101-20080911'
union all
select '2 | |20080101,20080201,20080301,20080515,20080808'
union all
select '3 | |20080101,20080201,20080301,20080515,20081108'
Go

declare @s varchar(8)
select @s= convert(varchar(8),getdate(),112)

select stuff(replace(replace(cast(x as varchar(1000)),'</item><item>',case when type='1' then '-' else ',' end),'</item>',''),1,6,type ' | |') a
from
(
select left(a,1) type,
cast(
'<item>'

replace(
stuff(a,1,5,''),
case when left(a,1)=1 then '-' else ',' end,
'</item><item>'
)

'</item>'
AS XML
) x
from ta
) base

where x.value('
if (sql:column("base.type")="1") then
if(
(/item/text())[1]<sql:variable("@s")
and
(/item/text())[2]>sql:variable("@s")
)
then 1
else 0
else
count(//item[text()>sql:variable("@s")])
'
,
'int'
)>0
go

分享:談SQL Server 2005最后升級:SP3年底發(fā)布
雖然SQL Server 2008已經(jīng)發(fā)布了一段時間,但微軟并沒有忘記活了三年多的SQL Server 2005,最后一個升級服務包SP3也將在今年底如期推出。 SQL Server持續(xù)性服務首席項目經(jīng)理Nosheen

來源:模板無憂//所屬分類:Mssql數(shù)據(jù)庫教程/更新時間:2009-09-17
相關Mssql數(shù)據(jù)庫教程
欧美一级高清免费播放| 国产精品久久久久久久久免费桃花 | 久久久av一区| 男同互操gay射视频在线看| 成人在线观看免费完整| 露出调教综合另类| 中文字幕乱码亚洲精品一区 | 黄色国产小视频| 国产精品毛片久久久久久久av| 一区二区三区午夜探花| 欧美日韩国产一中文字不卡| 国产精品专区h在线观看| 在线观看视频你懂得| 国产精欧美一区二区三区蓝颜男同| 日韩精品乱码av一区二区| 91精品久久久久久久99蜜桃 | 亚洲v日韩v欧美v综合| 欧美成人综合色| 免费观看不卡av| 亚洲免费在线视频| 国产成人精品av| 精品人妻无码中文字幕18禁| se01亚洲视频| 懂色av一区二区夜夜嗨| 国产一区二区三区久久精品| www.亚洲成人网| 中文字幕二区三区| 国产日韩亚洲欧美精品| 日韩一二在线观看| 色播五月综合| 国产一级做a爱片久久毛片a| 亚洲天天影视网| 欧美图片一区二区三区| 国产伦精品一区二区三区照片91| 国产又黄又粗的视频| 久久九九热re6这里有精品| 亚洲欧洲日韩一区二区三区| 欧美中文在线免费| 国产高清成人久久| 日韩激情精品| 国产精品国产三级国产普通话99| 国产69精品久久久久久| 激情小说欧美色图| 欧美精品三级在线| 国产精品久久久久久久久免费桃花 | 2019精品视频| www.555国产精品免费| 中文成人在线| 国产精品国产自产拍高清av王其| 国产成人jvid在线播放| 欧美一区二区三区成人精品| 欧美做受69| 精品欧美国产一区二区三区| 国产日韩在线一区二区三区| 久久精品这里只有精品| 亚洲欧洲日韩| 欧美一区二区啪啪| 特色特色大片在线| 国产精品自偷自拍| 国产一区在线观看视频| 久久精品色欧美aⅴ一区二区| 波多结衣在线观看| 久久婷婷五月综合色丁香| 国产欧美日韩在线看| 日韩美女激情视频| 香蕉视频久久久| 久久不见久久见中文字幕免费| 欧美日韩精品中文字幕| 久久这里精品国产99丫e6| 久久夜靖品2区| 六月婷婷一区| 影音先锋日韩有码| www.99r| 久久爱www.| 亚洲一区二区三区四区的| 国产精品一区二区av| 97免费在线观看视频| 久久久久国产一区二区| 在线免费观看羞羞视频一区二区| 91香蕉视频污版| 国产精品视频首页| 亚洲午夜久久久久| 蜜桃传媒一区二区| 国产主播第一页| 久久91精品国产91久久小草| 久久综合伊人77777| 大尺度在线观看| 一道在线中文一区二区三区| 91久久精品午夜一区二区| 一区二区不卡视频| 丰满人妻一区二区| 久久久精品日韩欧美| 国产日韩欧美在线视频观看| 久艹视频在线观看| 久久中文在线| 另类视频在线观看| 亚洲久久久久久| 日韩中文在线电影| 精品91自产拍在线观看一区| 欧美牲交a欧美牲交aⅴ免费下载| 色婷婷成人网| 欧美色xxxx| 国产精品h视频| 午夜影院免费体验区| 久久久久久久久伊人| 91久久嫩草影院一区二区| 亚洲精品在线观看av| 久久激情网站| 欧美精品制服第一页| 中文幕无线码中文字蜜桃| 91精品啪在线观看国产18| 亚洲精品久久久久久久久久久久久| 日韩免费高清在线| 黄色美女久久久| 欧美日韩国产成人在线91| 婷婷五月综合缴情在线视频| 久久久国产精品网站| 黑人巨大精品欧美一区二区| 国产a级片免费看| 欧美gay囗交囗交| 亚洲综合色丁香婷婷六月图片| 日韩中文字幕一区二区| 少妇高潮一区二区三区99小说 | 国产xxxxhd| 精品国产1区| 亚洲精品久久7777777| 中文字幕乱妇无码av在线| 国产尤物久久久| 亚洲成av人影院在线观看| 爱豆国产剧免费观看大全剧苏畅| 久久99影视| 亚洲精品乱码久久久久久按摩观| 婷婷中文字幕在线观看| 日韩理论片av| 伊人久久综合97精品| 波多野结衣一本| 亚洲欧美久久久| 久久久久这里只有精品| 手机在线免费看毛片| 蜜臀av性久久久久av蜜臀妖精| 97视频在线观看免费高清完整版在线观看| 永久免费看片视频教学| 麻豆精品一区二区av白丝在线| 日韩av电影免费观看高清| 日韩一区二区视频在线| 99re在线精品| 精品国产一区二区三区日日嗨| 欧美视频久久久| 亚洲成人www| 3d动漫一区二区三区| 狼人精品一区二区三区在线| 亚洲精品一区二区三区在线观看 | av网站免费在线看| 葵司免费一区二区三区四区五区| 欧美在线视频免费| 日本免费在线观看视频| 久久精品夜夜夜夜久久| 日本在线观看一区二区| 日本免费成人| 日韩区在线观看| 天天躁日日躁狠狠躁av| 亚洲免费婷婷| 国产精品户外野外| 亚洲熟妇av乱码在线观看| 最新热久久免费视频| 黑人巨大国产9丨视频| 日韩在线网址| 亚洲黄页网在线观看| 风间由美一二三区av片| 久久综合五月| 成人疯狂猛交xxx| va视频在线观看| 天天综合日日夜夜精品| 91看片就是不一样| 亚洲国产日韩欧美在线| 欧美激情在线视频二区| 天天操天天摸天天干| 国产亚洲欧美在线| 这里只有精品66| 精品网站aaa| 国产亚洲精品91在线| 人成免费在线视频| 国产福利精品导航| 国模一区二区三区私拍视频| 成人在线爆射| 欧美一区二区三区在线观看 | 秋霞视频一区二区| 日本丰满少妇一区二区三区| 日本高清一区二区视频| 悠悠资源网久久精品| 日本久久久久亚洲中字幕| 又骚又黄的视频| 亚洲一区二区高清| 午夜国产一区二区三区| 狠狠色狠狠色综合日日tαg | 中文字幕一区二区三区日韩精品| 亚洲国产精彩中文乱码av在线播放 | 天天操,天天操| 亚洲国产一区二区三区高清| 国产精品夫妻激情| 亚洲精品成av人片天堂无码| 欧美自拍偷拍一区| 亚洲综合123| 视频一区中文字幕| 国产精品国产一区二区| 日韩av电影资源网| 精品盗摄一区二区三区| 林心如三级全黄裸体| 97久久精品人人爽人人爽蜜臀 | 91亚洲欧美激情| 欧美日韩在线一区| 亚洲国产综合av| 男人的j进女人的j一区| 国产一级特黄a大片99| 欧美一区二区三区婷婷| 亚洲跨种族黑人xxx| 精品无码m3u8在线观看| 自拍偷拍欧美精品| 国产一区视频免费观看| 日韩一级免费| 99九九电视剧免费观看| 亚洲视频资源| 在线播放日韩欧美| 日本道在线观看| 亚洲伊人色欲综合网| 亚洲免费黄色录像| 日韩激情av在线| 久久精品人人做人人爽电影| 亚洲成人影音| 日韩在线视频线视频免费网站| 久久精品视频7| 性欧美疯狂xxxxbbbb| 免费黄色在线播放| 国产成人a级片| 黄色网zhan| 久久久国产精品| 国产人妖伪娘一区91| а√天堂资源国产精品| 国产丝袜一区二区三区| 国产第一页在线播放| 一区二区三区免费在线观看| 国内av一区二区| 久久99国产精品久久99果冻传媒| 亚洲高清乱码| 欧美第一精品| 国产精品午夜视频| 欧美爱爱视频| 久久精品亚洲国产| 91片黄在线观看喷潮| 91麻豆精品国产91久久久久久久久| 日韩视频在线观看免费视频| 国产亚洲精品中文字幕| www.国产区| 麻豆精品视频在线观看免费| 日韩偷拍一区二区| 久久人人88| 成人中文字幕在线观看| 色狠狠一区二区三区| 久久亚洲私人国产精品va| 国产女主播福利| 精品日韩一区二区三区免费视频| 久久久久人妻一区精品色欧美| 一二三区精品视频| 日本久久久久久久久久| 不卡在线视频中文字幕| 日韩精品视频久久| 日韩电影一区二区三区四区| 亚洲砖区区免费| 欧美另类视频| 久久精品女人的天堂av| 成人精品亚洲| 91久久久精品| 加勒比色综合久久久久久久久 | 亚洲自拍偷拍视频| 成人台湾亚洲精品一区二区| 91精品国产乱码久久久久久久久 | 色一情一区二区三区| 国产精品一区在线观看你懂的| 97中文字幕在线| 久久精品网址| 欧美少妇一级片| 日韩午夜av在线| 天堂√在线观看一区二区| 一区二区三区国产精华| 久久久久久久久一区| 99视频精品视频高清免费| 成人性色av| 成人精品天堂一区二区三区| 99精品99久久久久久宅男| 国产欧美日韩视频在线| 91夜夜未满十八勿入爽爽影院| 农村少妇一区二区三区四区五区| 国产精品国产三级国产aⅴ9色| 日韩精品成人在线观看| 97在线视频观看| 婷婷久久免费视频| 国内久久久精品| 色综合一区二区日本韩国亚洲| 欧美国产日韩一区二区| 成人看片网页| 久久久久久亚洲| 国产精品诱惑| 91av在线精品| 精品国产一级| 国产成人精品久久| julia中文字幕一区二区99在线| 欧美专区在线视频| 日韩在线成人| 国产精品一区久久久| 日韩精品欧美大片| 999视频在线免费观看| 日韩欧美三级| 免费在线国产精品| 黄色在线成人| 中文字幕一区二区三区乱码 | 亚洲人成电影在线播放| av中文字幕播放| 色多多国产成人永久免费网站 | 日韩中文字幕视频在线| 天堂网在线中文| 欧美激情久久久久| 国产精品一区二区精品| 国产成人精品免费久久久久| silk一区二区三区精品视频| 91精品视频免费观看| 国产在线观看91一区二区三区| 国产美女99p| 午夜电影亚洲| 综合久久国产| 久久99国产精品麻豆| 在线免费av播放| 国产无人区一区二区三区| 手机在线成人av| 亚洲一区二区高清| 欧美精品一级片| 日韩视频在线观看一区二区| 一级黄色小视频| 中文字幕亚洲国产| 日本免费成人| 成人国产在线视频| 欧美韩日高清| 亚洲一区二区三区四区中文| 蜜臀久久99精品久久久画质超高清| 日本精品一区二区三区四区 | 国产成人91久久精品| 日韩高清成人在线| 好吊妞www.84com只有这里才有精品 | 中文字幕一区二区三区中文字幕 | 亚洲精品进入| 久久久久久精| 久久婷婷影院| 欧美三级理论片| 亚洲欧洲国产日本综合| 91麻豆精品成人一区二区| 欧美一卡二卡三卡| 国产99视频在线| 久久青草福利网站| 日韩欧美ww| 日韩欧美三级一区二区| 久久精品国产精品亚洲红杏| 91精品无人成人www| 中文字幕制服丝袜成人av| 午夜国产小视频| 日韩一区二区三免费高清| 好吊色在线观看| 51午夜精品视频| 成人激情视频| 日本一级淫片演员| 国产·精品毛片| 人人妻人人澡人人爽人人精品| 在线一区二区三区做爰视频网站| 波多野结衣在线观看一区| 中文字幕亚洲天堂| 亚洲一二三区视频| 久久久久久久久久久一区| 免费在线成人网| 国产伦理在线观看| 欧美网站在线观看| 夜夜嗨aⅴ一区二区三区| 色综合久久悠悠| 综合伊思人在钱三区| 一本久久a久久精品vr综合| 豆国产96在线|亚洲| 亚洲一级中文字幕| 欧美一区二区三区视频在线| 欧美性受xxxx狂喷水| 国产成人jvid在线播放| 欧美.www| 日韩av资源在线| 一区二区在线观看免费| 综合激情网五月| 欧美成人一二三| 免费成人网www| 三级在线免费观看| 久久精品网站免费观看| 2021亚洲天堂| 伊人久久久久久久久久| eeuss国产一区二区三区四区| 色综合电影网| 99r国产精品|