[英]Using .query() in t-sql to get only inner text
如何使用t-sql
的.query()
語法來選擇特定節點,但只獲取內部文本而不是包含在節點標簽中的內部文本?
就像我這樣做的時候:
SELECT TOP 1 [XMLContent].query('/Event/Username'), * from Events
我明白了:
<Username>BURGUNDY</Username>
但我想要的只是BURGUNDY
。 很明顯我可以做一些子字符串來獲得它,但我希望有一個快速簡便的方法來做到這一點。
您可以使用xquery data()函數:
[XMLContent].query('data(/Event/Username)')
但是,這將返回XML作為類型(即使沒有標記)。
您也可以使用.value而不是.query:
[XMLContent].value('/Event[1]/Username[1]', 'NVARCHAR(MAX)')
declare @xml xml;
set @xml = '<Event><Username>BURGUNDY</Username></Event>'
Select @xml.value('/Event[1]/Username[1]', 'varchar(30)');
使用.value()代替.query()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.