[英]SQL Server XML Querying with specific value
我在xml類型的表列之一中具有如下所示的XML
<fields>
<field>
<name>SourceFileName</name>
<value>ABCD</value>
</field>
<field>
<name>Template</name>
<value>XYZ</value>
</field>
</fields>
我需要查詢XML以獲取字段/名稱節點中特定文本的值
我使用下面的SQL,但第二個不返回任何數據
SELECT *
FROM xmltable
WHERE XMLText.value('(/fields/field/name)**[1]**' ,'varchar(max)') LIKE
'Template'
SELECT *
FROM xmltable
WHERE XMLText.value('(/fields/field/name)**[1]**' ,'varchar(max)') LIKE
'SourceFileName'
而下面的返回數據
SELECT *
FROM xmltable
WHERE XMLText.value('(/fields/field/name)**[2]**' ,'varchar(max)') LIKE
'Template'
有人可以幫忙,我如何編寫一個通用查詢以根據傳遞的名稱返回數據?
如果要處理多個 XML元素,則需要使用.nodes()
XQuery函數。
嘗試這樣的事情:
SELECT
Name = XC.value('(name)[1]', 'varchar(50)'),
[Value] = XC.value('(value)[1]', 'varchar(25)')
FROM
dbo.XmlTable
CROSS APPLY
XmlText.nodes('/fields/field') AS XT(XC)
.nodes()
調用將創建一個“偽”表XT
其中的單列XC
包含與該XPath表達式匹配的XML片段-在您的情況下,您將獲得兩行,每行代表<field>
元素之一。
現在,您可以“進入”這些XML片段,並使用.value()
調用提取所需的數據-並通過以下方式獲得兩個 <field>
元素的名稱和值:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.