查询 XML 列 - 元素值
Query XML Column - Element value
这应该是一个简单的..只是遗漏了一些明显的东西。
有一个 XML 列..并且想要去除一个元素值。
我想要的只是 IdentityNo1 "field" 的值。只会有1个。
尝试了一大堆选项......但似乎所有选项都缺失......它们都是 return 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)
如果我理解你的问题
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
Returns
ID IdentityNo1
1 645654645654
2 SomeOtherIdentity
这应该是一个简单的..只是遗漏了一些明显的东西。
有一个 XML 列..并且想要去除一个元素值。
我想要的只是 IdentityNo1 "field" 的值。只会有1个。
尝试了一大堆选项......但似乎所有选项都缺失......它们都是 return 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)
如果我理解你的问题
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
Returns
ID IdentityNo1
1 645654645654
2 SomeOtherIdentity