簡體   English   中英

替換 XML 命名空間以使用 XQUERY

[英]Replacing XML namespace to use XQUERY

我在表中的一列中有一個如下所示的示例輸入。

<OrderNotification xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <POSKI xmlns="http://MyCompany.co.nz">12345</POSKI>
    <BUKRS xmlns="http://MyCompany.co.nz">ABCD</BUKRS>
    <PRCTR xmlns="http://MyCompany.co.nz">1324</PRCTR>
</OrderNotification>

我需要切碎此 XML 以從消息中提取值。 但是,由於子節點中的命名空間,我無法這樣做。 根據我上一個問題的建議,我將查詢寫如下。

DECLARE @OrderLogs TABLE ( OrderNotification XML);

INSERT INTO @ProjectLogs (OrderNotification)
    (SELECT Info
     FROM [MainLogging].[dbo].[JobLogs]
     WHERE EventId = 'XXXXXXXX'
       AND Message ='OrderNotification');

WITH XMLNAMESPACES (DEFAULT 'http://mycompany.co.nz')
    SELECT 
        c.value('(POSKI/text())[1]','VARCHAR(20)') AS ORDER,
        c.value('(BUKRS/text())[1]','VARCHAR(256)') AS DESCRIPTION
    FROM 
        @ProjectLogs
    CROSS APPLY 
        OrderNotification.nodes('/OrderNotification') AS t(c);

它沒有返回任何 output 因為我沒有正確引用節點。 有人可以幫忙嗎?

提前致謝

請嘗試以下解決方案。

SQL

-- DDL and sample data population, start
DECLARE @tbl TABLE (ID INT IDENTITY PRIMARY KEY, OrderNotification XML);
INSERT INTO @tbl (OrderNotification ) VALUES
(N'<OrderNotification xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <POSKI xmlns="http://MyCompany.co.nz">12345</POSKI>
    <BUKRS xmlns="http://MyCompany.co.nz">ABCD</BUKRS>
    <PRCTR xmlns="http://MyCompany.co.nz">1324</PRCTR>
</OrderNotification>');
-- DDL and sample data population, end

WITH XMLNAMESPACES ('http://MyCompany.co.nz' AS ns1)
SELECT ID
    , c.value('(ns1:BUKRS/text())[1]','VARCHAR(20)') AS BUKRS
    , c.value('(ns1:POSKI/text())[1]','VARCHAR(256)') AS POSKI
    , c.value('(ns1:PRCTR/text())[1]','VARCHAR(256)') AS PRCTR
FROM @tbl
    CROSS APPLY OrderNotification.nodes('/OrderNotification') AS t(c);

Output

+----+-------+-------+-------+
| ID | BUKRS | POSKI | PRCTR |
+----+-------+-------+-------+
|  1 | ABCD  | 12345 |  1324 |
+----+-------+-------+-------+

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM