Sql server 如何从XML文件中提取元素?

Sql server 如何从XML文件中提取元素?,sql-server,tsql,Sql Server,Tsql,下面是一个简单的XML片段。如果我只想提取'EntityFriendlyName'属性,T-SQL会是什么样子 <SimpleRuleValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <EntityId>0</EntityId> <EntityFriendlyName>AL

下面是一个简单的XML片段。如果我只想提取'EntityFriendlyName'属性,T-SQL会是什么样子

<SimpleRuleValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <EntityId>0</EntityId>
    <EntityFriendlyName>ALine</EntityFriendlyName>
</SimpleRuleValue>

0
艾琳

应该是这样的:

SELECT CAST(X.SomeXML AS XML).value('(SimpleRuleValue/EntityFriendlyName)[1]','nvarchar(1000)') AS EntityFriendlyName
FROM XmlSource X
编辑: 这里有一种方法:

declare @x xml

set @x = '<SimpleRuleValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
              <EntityId>0</EntityId>
              <EntityFriendlyName>ALine</EntityFriendlyName>
          </SimpleRuleValue>'

select @x.query('data(SimpleRuleValue/EntityFriendlyName)')
declare@xxml
设置@x='1
0
艾琳
'
选择@x.query('data(SimpleRealValue/EntityFriendlyName)')

假设列
X
已经是XML类型,您可以简化为
SELECT X.value(…)
Correct marc\s,这实际上是我曾经遇到的一个类似问题的通用解决方案(我相信当时的数据类型是varchar)。@marc\s:谢谢你的提示。编辑了答案。