ForXmlPath簡單應用 一:ForXmlPath介紹 forXmlPath 是SQL中的forXml語法的一部分,本文主要講Path模式 SQL中FOR XML子句的四種模式用法 1、AUTO模式:返回數據表為起表名的元素,每一列的值返回為屬性; SELECT * FROM tb_test f ...
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;
查詢結果:
-
ForXmlPath