SQL Server 2012查询XML列

SQL Server 2012查询XML列

问题描述:

我在网上做了很多关于这个问题的答案的研究。我发现了很多帮助网站,但不幸的是我没有得到结果(我不太了解XML)。SQL Server 2012查询XML列

我有一个表(称为CustomField.PersonCustomFieldValue),它具有存储XML数据的XML数据类型列(称为XmlValue)。我不确定如何提取值。

存储在列中的数据的一个例子是:

<XmlDataValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><Value xsi:type="xsd:string">NO</Value></XmlDataValue> 

如何提取字符串值?在这种情况下 - “否”。

非常感谢。

+0

检查[这](http://*.com/questions/899313/select-values-from-xml-field-in-sql -server-2008)的问题,可能会帮助你通过! –

试试这样说:

DECLARE @xml XML= 
N'<XmlDataValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <Value xsi:type="xsd:string">NO</Value> 
</XmlDataValue>'; 
SELECT @xml.value(N'(/XmlDataValue/Value/text())[1]',N'nvarchar(max)'); 

这将返回相同的

SELECT @xml.value(N'(//Value)[1]',N'nvarchar(max)') 

但你应该总是尽可能具体!

调用此表的某一列如下:

SELECT XmlValue.value(N'(/XmlDataValue/Value/text())[1]',N'nvarchar(max)') 
FROM YourTable 
+0

许多人都感谢Shnugo。另一个问题,我如何调整列SQL以仅显示某个值,而不在另一个Select中嵌套Select语句? –

+0

@MarkBell SO的一个原则是:一个问题 - 一个问题。请避免*后续问题。请开始一个新的问题,在其中放置一些示例代码和预期输出。您必须提供更多信息。我不知道,你有什么其他选择,你认为在哪里嵌套的东西......快乐编码! – Shnugo