sql >> データベース >  >> RDS >> Sqlserver

SQL Server 2008 で XML 列の値を照会する方法

    XML データが不完全です - 名前空間プレフィックス ns0 を使用しています どこにも定義せずに...サンプルに任意の、完全に作成された XML 名前空間を追加しました。その XML 名前空間が実際にどのようなものであるかを確認し、それに応じてサンプルを調整する必要があります!

    これを試してください:

    DECLARE @InputTable TABLE (ID INT NOT NULL, XmlData XML)
    
    INSERT INTO @InputTable(ID, XmlData) VALUES(42, '<?xml version="1.0" encoding="UTF-8" ?>
    <ns0:Root xmlns:ns0="urn:some-sample-xml-namespace">
        <ns0:Result>
            <ns0:AStatus>Aaa</ns0:AStatus>
            <ns0:BStatus>Bbb</ns0:BStatus>
        </ns0:Result>
    </ns0:Root>')
    
    -- define the XML namespace to use     
    ;WITH XMLNAMESPACES('urn:some-sample-xml-namespace' AS x)
    SELECT 
        ID,
        XC.value('(x:AStatus)[1]', 'varchar(50)') 
    FROM    
        @inputtable
    CROSS APPLY
        -- get a "pseudo" table of nodes <ns0:Root>/<ns0:Result>
        XmlData.nodes('x:Root/x:Result') AS XT(XC)
    

    基本的に、定義が必要です XML 名前空間プレフィックス用 - および SELECT 内 この XML データに対して、同じが必要です XML 名前空間 (ただし、示されているように、その名前空間に割り当てられるプレフィックスは異なる場合がありますが、名前空間 一致する必要があります!).

    次に、テーブルからデータを選択し、XML データの場合は .nodes() を使用します この XPath 式に一致する XML 要素のリストを取得する XQuery 関数 - これらのノードをメモリ内疑似テーブル XT として取得します。 単一の XML 列 XC を使用 そこから再び値を取得できます (最初の <ns:AStatus> に到達するなど) 要素)




    1. あるテーブルから別のテーブルにデータを移動する、postgresqlエディション

    2. java.lang.IllegalStateException:閉じたEntityManagerFactoryで操作を実行しようとしています

    3. MySql単一テーブル、過去7日間を選択し、空の行を含める

    4. Pythonを使用してWindows認証でMSSQLServerに接続しますか?