SqlServer2005生成XML檔案

2021-08-26 09:47:14 字數 2234 閱讀 5964

[color=blue][b]for xml path 語句的應用[/b][/color]

大家都知道在sql server中利用 for xml path 語句能夠把查詢的資料生成xml資料,下面是它的一些應用示例。

declare @temptable table(userid int , username nvarchar(50));

insert into @temptable (userid,username) values (1,'a')

insert into @temptable (userid,username) values (2,'b')

select userid,username from @temptable for xml path

執行這段指令碼,將生成如下結果:

1a

2b

select userid,username from @temptable for xml path('lzy')

再次執行上述指令碼,將生成如下的結果:

1a

2b

可以看到節點變成,其實path() 括號內的引數是控制節點名稱的,這樣的話大家可以看一下如果是空字串(不是沒有引數)會是什麼結果?

select userid,username from @temptable for xml path('')

執行上面這段指令碼將生成結果:

1a2

b

這樣就不顯示上級節點了,大家知道在 path 模式中,列名或列別名被作為 xpath 表示式來處理,也就是說,是列的名字,這樣大膽試驗一下不給指定列名和別名會是怎麼樣?

select cast(userid as varchar) + '',username + '' from @temptable for xml path('')

執行上面這句將生成結果

1a2b

select cast(userid as varchar) + ',',username + '',';' from @temptable for xml path('')

生成結果

1,a;2,b;

select '' from @temptable for xml path('')

生成結果

還可以生成其他格式,大家可以根據自己需要的格式進行組合。

declare @t1 table(userid int , username nvarchar(50),cityname nvarchar(50));

insert into @t1 (userid,username,cityname) values (1,'a','上海')

insert into @t1 (userid,username,cityname) values (2,'b','北京')

insert into @t1 (userid,username,cityname) values (3,'c','上海')

insert into @t1 (userid,username,cityname) values (4,'d','北京')

insert into @t1 (userid,username,cityname) values (5,'e','上海')

select b.cityname,left(userlist,len(userlist)-1) from (

select cityname,

(select username+',' from @t1 where cityname=a.cityname for xml path('')) as userlist

from @t1 a

group by cityname

) b

生成結果(每個城市的使用者名稱)

北京 b,d

上海 a,c,e

**:[url]

SQL Server2005複製實現

一 準備工作 1 在發布伺服器上建立乙個共享目錄,作為發布快照檔案的存放目錄。例如 在d 盤根目錄下建資料夾名為pub 2 設定sql 發布伺服器和訂閱伺服器均設定 步驟 開啟服務 控制面板 管理工具 服務 右擊sqlserver agent 屬性 登入 選擇 此帳戶 輸入或選擇第一步中建立的win...

SQL Server 2005完全解除安裝

sql server 2005的解除安裝是乙個非常頭疼的問題。我曾經嘗試過直接使用 新增或刪除程式 工具解除安裝 清除安裝目錄 刪除登錄檔內容等等各種方式綜合解除安裝,勉強成功。現在終於找到了乙個事半功倍的方法,多次嘗試,未有失敗,具體如下 第一種是微軟官方提供的工具 msicuu2.exe 微軟官...

SQLSERVER 2005 遞迴查詢

專案中有使用者組表usergroup如下 其中pid表示當前組的上級組 表資料如下 現在想查詢出頂級組 沒有上級組叫頂級組 a1組的所有子孫組id,sql如下 查詢子節點 with rtd1 as select id pid from usergroup rtd2 as select from rt...