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

SQL Server XQuery がエラーを返す

    XPath 式により、SQL Server テーブルの各行に対して複数の行が返される可能性があります。 CROSS APPLY を使用する必要があります そして .nodes() への呼び出し 目的の情報を取得するには:

    WITH XMLNAMESPACES ('http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/Resume' AS ns)
    SELECT 
        JobCandidateID,
        ResNames.value('(ns:Name.First)[1]', 'nvarchar(100)')
    FROM   
        HumanResources.JobCandidate
    CROSS APPLY
        [Resume].nodes('/ns:Resume/ns:Name') AS XTbl(ResNames)
    

    それはすべての JobCandidateID を返すはずです Resume で定義されている値とすべての名前 テーブルの各行の XML 列。

    単一の <name> しか存在しないことが確実な場合 タグを XML 列に追加した場合、これを次のように短縮することもできます:

    WITH XMLNAMESPACES ('http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/Resume' AS ns)
    SELECT 
        JobCandidateID,
        [Resume].value('(/ns:Resume/ns:Name/ns:Name.First)[1]', 'nvarchar(100)')
    FROM   
        HumanResources.JobCandidate
    



    1. Entity Framework で GetDate() を管理する方法

    2. Windows10のPostgresql11にJSONファイルをインポートする

    3. sqlplusprintrunningステートメント

    4. Oracleのサブ文字列