Joe*_*ool 5 xml sql t-sql sql-server xpath
如何使用.query()
语法t-sql
来选择特定节点,但只获取内部文本而不是包含在节点标签中的内部文本?
就像我这样做的时候:
SELECT TOP 1 [XMLContent].query('/Event/Username'), * from Events
Run Code Online (Sandbox Code Playgroud)
我明白了:
<Username>BURGUNDY</Username>
Run Code Online (Sandbox Code Playgroud)
但我想要的只是BURGUNDY
.很明显我可以做一些子字符串来获得它,但我希望有一个快速简便的方法来做到这一点.
您可以使用xquery data()函数:
[XMLContent].query('data(/Event/Username)')
Run Code Online (Sandbox Code Playgroud)
但是,这将返回XML作为类型(即使没有标记).
您也可以使用.value而不是.query:
[XMLContent].value('/Event[1]/Username[1]', 'NVARCHAR(MAX)')
Run Code Online (Sandbox Code Playgroud)
declare @xml xml;
set @xml = '<Event><Username>BURGUNDY</Username></Event>'
Select @xml.value('/Event[1]/Username[1]', 'varchar(30)');
Run Code Online (Sandbox Code Playgroud)