查询XML列 - 元素值

时间:2016-11-14 20:40:53

标签: sql sql-server xml element

这应该是一个简单的...只是遗漏了一些明显的东西。

拥有XML列..并想要删除元素值。

我想要的只是IdentityNo1"字段的价值" 。只有1个。

尝试了一大堆选项...而且似乎在所有这些选项上都缺失了...它们都返回NULL /空白.....(下面3个样本......)

关于简单解决方案的快速指示? (当然我错过了@或者等等)。

提前致谢...

DECLARE @XML xml
SET @XML = '<BureauEnquiry13 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Surname>BLAH</Surname>
  <Forename1>BLAHSRUNAMCE</Forename1>
  <IdentityNo1>645654645654</IdentityNo1>
</BureauEnquiry13>'

SELECT @XML.query('/BureauEnquiry13/IdentityNo1/.').value('.', 'varchar(50)') as IdentityNo1
select @XML.value('(/BureauEnquiry13/IdentityNo1/.)[1]', 'varchar(50)') as IdentityNo1
SELECT Nodes.Node.value('(IdentityNo1)[1]', 'VARCHAR(50)') 'IdentityNo1'
FROM     @XML.nodes('/BureauEnquiry13') Nodes(Node)

1 个答案:

答案 0 :(得分:1)

如果我理解你的问题

Declare @YourTable table (ID int,XMLData xml)
Insert Into @YourTable values
(1,'<BureauEnquiry13 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><Surname>BLAH</Surname><Forename1>BLAHSRUNAMCE</Forename1><IdentityNo1>645654645654</IdentityNo1></BureauEnquiry13>'),
(2,'<BureauEnquiry13 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><Surname>BLAH</Surname><Forename1>BLAHSRUNAMCE</Forename1><IdentityNo1>SomeOtherIdentity</IdentityNo1></BureauEnquiry13>')

Select ID
      ,IdentityNo1 = XMLData.query('/BureauEnquiry13/IdentityNo1/.').value('.', 'varchar(50)')
 From @YourTable

返回

ID  IdentityNo1
1   645654645654
2   SomeOtherIdentity