Sql server 如何从XML文件中提取元素?
下面是一个简单的XML片段。如果我只想提取'EntityFriendlyName'属性,T-SQL会是什么样子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
<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:谢谢你的提示。编辑了答案。