2015-05-20 2 views
1

Я пытаюсь проанализировать XML в SQL Server 2008 R2, и у меня возникают некоторые проблемы. Я пытаюсь разобрать через элементы для каждого родительского узла, но я не получаю решение Данные XML ниже:Запрос данных XML в SQL Server 2008 R2

<MerchantInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <Active>true</Active> 
    <CreatedDate>2015-04-16T00:00:00+05:30</CreatedDate> 
    <CreatedBy>63747</CreatedBy> 
    <ModifiedBy>63747</ModifiedBy> 
    <ModifiedUserName>[email protected]</ModifiedUserName> 
    <MerchantCode>0</MerchantCode> 
    <RetailOutletName>Gayatri Automobiles</RetailOutletName> 
    <DealerName>Vandana Singh</DealerName> 
    <ERPCode>16622710</ERPCode> 
    <OwnerID>0</OwnerID> 
    <ICICIAcDetailsRequired>false</ICICIAcDetailsRequired> 
    <SupplyLocationCode>Mirzapur</SupplyLocationCode> 
    <IsLive>false</IsLive> 
    <LiveSAM>1</LiveSAM> 
    <TestSAM>0</TestSAM> 
    <OutletCategory>8001</OutletCategory> 
    <HighwayNo>NH7</HighwayNo> 
    <HighwayName>Mirzapur Rewa Road</HighwayName> 
    <SecurityDeposit>10000</SecurityDeposit> 
    <HSDSaleMonthly>200</HSDSaleMonthly> 
    <Comments /> 
    <VerifiedDate>0001-01-01T00:00:00</VerifiedDate> 
    <VerifiedBy>0</VerifiedBy> 
    <isCloned>false</isCloned> 
    <VerifiedByUserName /> 
    <ApprovedDate>0001-01-01T00:00:00</ApprovedDate> 
    <ApprovedBy>0</ApprovedBy> 
</MerchantInfo> 

мой код:

;WITH XMLNAMESPACES ('http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"' AS mi) 
SELECT 
    T.C.value('mi:erpcode[1]','numeric') as erpcode, 
    T.C.value('mi:SecurityDeposit[1]','varchar(50)') AS securitydeposit 
FROM ChangeEvent ce 
    CROSS APPLY changeddata.nodes('mi/erpcode[1]') AS T(C) 
WHERE Ce.EntityTypeId = 2 
    AND CAST(Ce.ChangedData AS VARCHAR(MAX)) LIKE '%16622710%' 
GO 

Я ищу является:

erpcode securitydeposit 
16622710 10000 

Просьба помочь

ответ

1

Вам не нужно ;WITH XMLNAMESPACES для этого с ince XML-элементы, участвующие в запросе, не используют никакого префикса пространства имен, а XML-документ также не имеет пространства имен defult.

Также обратите внимание, что имя XML-элемент/атрибут чувствительны к регистру (f.e erpcode != ERPCode):

SELECT 
    T.C.value('ERPCode[1]','numeric') as erpcode, 
    T.C.value('SecurityDeposit[1]','varchar(50)') AS securitydeposit 
FROM ChangeEvent ce 
    CROSS APPLY ChangedData.nodes('MerchantInfo') AS T(C) 
WHERE Ce.EntityTypeId = 2 
    AND T.C.value('ERPCode[1]','numeric') = 16622710 

Demo

+0

Спасибо @ har07 .. –

+0

@AishwaryaMishra пожалуйста. Не забудьте [принять] (http://stackoverflow.com/help/someone-answers) ответ, когда у вас есть шанс сделать это – har07

Смежные вопросы