2010-07-29 32 views
2

如何检索MS SQL中的XML字段中的字段?如何从SQL XML查询中选择标签?

每当我使用此XML代码时,我尝试的每个查询都无法正常工作: 我想选择AccNumber值。

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <soap:Header> 
    <AuthSoapHd xmlns="https://temp.uri.com/Mngmt/"> 
     <System>System1</System> 
    </AuthSoapHd> 
    </soap:Header> 
    <soap:Body> 
    <PrintList xmlns="https://temp.uri.com/Mngmt/"> 
     <Account> 
     <AccNumber xmlns="https://temp.uri.com/Project/Object/Data">990368644</AccNumber> 
     </Account> 
    </PrintList> 
    </soap:Body> 
</soap:Envelope> 

我尝试以下的多个varations没有sucess

Select [RequestXML].query('/Envelope/Body/PrintList/Account/AccNumber') 
    FROM [dbo].[Table1] 
+0

你有没有尝试用soap添加信封和身体:? – Fosco 2010-07-29 19:58:30

回答

4

你忽略了XML命名空间是在玩 - 你需要注意一点!

WITH XMLNAMESPACES('http://schemas.xmlsoap.org/soap/envelope/' AS soap, 
        'https://temp.uri.com/Project/Object/Data' AS data, 
        'https://temp.uri.com/Mngmt/' AS mgmt) 

SELECT 
    RequestXML.value('(/soap:Envelope/soap:Body/mgmt:PrintList/mgmt:Account/data:AccNumber)[1]', 
        'BIGINT') AS 'AccNumber' 
FROM 
    [dbo].[Table1] 

希望能够奏效!

+0

谢谢Marc_S!这很完美!没有需要修改的地方。 – Nic 2010-07-30 02:47:21