SQL XML选择值
我如何选择此报表中的“值”SQL XML选择值,sql,xml,Sql,Xml,我如何选择此报表中的“值” <int xmlns="http://schemas.microsoft.com/2003/10/Serialization/">247734</int> 我试过了 DECLARE @XML XML SET @XML = '<int xmlns="http://schemas.microsoft.com/2003/10/Serialization/">247734</int>' SELECT @XML.value(
<int xmlns="http://schemas.microsoft.com/2003/10/Serialization/">247734</int>
我试过了
DECLARE @XML XML
SET @XML = '<int xmlns="http://schemas.microsoft.com/2003/10/Serialization/">247734</int>'
SELECT @XML.value('(/int)[1]', 'varchar(30)')
FROM @xml.nodes('/int') Tbl ( Col )
但我不返回任何值。尝试以下操作
DECLARE @XML XML
SET @XML = '<int xmlns="http://schemas.microsoft.com/2003/10/Serialization/">247734</int>'
SELECT Col.value('(.)[1]', 'int')
FROM @xml.nodes('//*') As Tbl (Col )
您可以为名称空间定义别名,然后在xpath中使用该别名 如果不指定名称空间,xpath只能查找没有名称空间的标记 或者可以在xpath中查找任何名称空间*: 例如:
请注意方法1如何仅查找第一个值,而方法2如何查找两个值。这个问题是您的XML位于已定义的名称空间中,并且您正在尝试使用默认名称空间进行选择 要解决此问题,应在选择中定义命名空间:
DECLARE @XML XML
SET @XML = '<int xmlns="http://schemas.microsoft.com/2003/10/Serialization/">247734</int>'
SELECT @XML.value('declare namespace ns="http://schemas.microsoft.com/2003/10/Serialization/"; (/ns:int)[1]', 'varchar(30)' )
FROM @xml.nodes('/') Tbl ( Col )
DECLARE @XML XML
SET @XML = '<int xmlns="http://schemas.microsoft.com/2003/10/Serialization/">247734</int>'
SELECT @XML.value('declare namespace ns="http://schemas.microsoft.com/2003/10/Serialization/"; (/ns:int)[1]', 'varchar(30)' )
FROM @xml.nodes('/') Tbl ( Col )