2016-11-14 9 views
1

Это должно быть просто ... просто отсутствует что-то очевидное.Query XML Column - значение элемента

Имейте столбец XML .. и хотите удалить значение элемента.

Все, что я хочу, это значение поля IdentityNo1. Будет только 1.

Пробовал целый набор опций ... и просто кажется, что их нет на всех ... все они возвращают NULL/Blank ..... (3 образца ниже ...)

Любые быстрые указатели на легкое решение? (Конечно, мне не хватает @ или a и т. Д.).

Спасибо заранее ...

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) 
+0

пожалуйста, сообщите/теги ведьма RDBMS вы используете. – McNets

ответ

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 
+0

Спасибо .... 100%. –