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

XML に 2 つのラッパーがある場合、コンテンツを読み取れません

    この問題は、XML データの「ラッパー」の数とは関係ありません。問題は、最初のサンプルが XML 名前空間 を定義していることです。 (xmlns="test.xsd" ) <data> で ノードですが、クエリはそれを尊重していません。

    クエリを次のように変更する必要があります:

    -- Using the query() method
    ;WITH XMLNAMESPACES (DEFAULT 'test.xsd')
    SELECT 
        T.customer.query('id').value('.', 'INT') AS customer_id,
        T.customer.query('name').value('.', 'VARCHAR(20)') AS customer_name
    FROM 
        @data.nodes('data/subdata/customer') AS T(customer);
    

    その後、結果が得られます....

    この XML 名前空間の宣言がなければ、クエリは問題なく動作します.2 つ以上のラッパーはまったく問題ではありません..




    1. Mysqlの月と年の比較

    2. SQLiteCHECK制約

    3. ReadUncommittedは、存在するすべてのLOWER自動インクリメントIDを知ることができますか?

    4. NHibernate Linq Group By が SQL Server で適切にグループ化に失敗する