標籤:
ForXmlPath簡單應用 一:ForXmlPath介紹
forXmlPath 是SQL中的forXml文法的一部分,本文主要講Path模式
---SQL中FOR XML子句的四種模式用法
1、AUTO模式:返回資料表為起表名的元素,每一列的值返回為屬性;
SELECT * FROM tb_test for xml auto
2、RAW模式:返回資料行為元素,每一列的值作為元素的屬性;
SELECT * FROM tb_test for xml raw(‘fsf‘)
3、PATH模式:通過簡單的XPath文法來允許使用者自訂嵌套的XML結構、元素、屬性值
SELECT * FROM tb_test for xml path(‘fsf‘)
4、EXPLICIT模式:通過SELECT文法定義輸出XML的結構
二:ForXmlPath應用樣本
Tab_users:
tab_items:
-
- ForXmlPath
SELECT * FROM tab_users FOR XML PATH
- ForXmlPath(‘Param‘)
SELECT * FROM tab_users FOR XML PATH(‘User‘)
- ForXmlPath + AS
SELECT userID AS id,LastName AS 姓,FirstName AS 名 FROM dbo.tab_users FOR XML PATH(‘使用者‘)
- 終極大招
SELECT userID AS id ,
LastName AS 姓,
FirstName AS 名,
(SELECT CONCAT(itemName,‘,‘) FROM dbo.tab_items WHERE userId =1 FOR XML PATH(‘‘)) AS Items
FROM dbo.tab_users
WHERE userID = 1
由查詢結果可以看到我們通過 ForXmlPath實現了將tab_items表中userid為1的item,最後多了一個逗號,我們可以將查詢結果利用String的Trim(",")擴充方法去掉然後可以根據需要是否需要進行Split拆分,也可以利用資料庫中的LEFT()方法截取字串將最後一個逗號去掉。
- 終極大招補充
SELECT * ,
LEFT(A.Items, LEN(A.Items) - 1) AS 物品
FROM ( SELECT userID AS id ,
LastName AS 姓 ,
FirstName AS 名 ,
( SELECT CONCAT(itemName, ‘,‘)
FROM dbo.tab_items
WHERE userId = 1
FOR
XML PATH(‘‘)
) AS Items
FROM dbo.tab_users
WHERE userID = 1
) AS A;
查詢結果:
SQLServer ForXmlPath簡單應用