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

SQLでOPENXMLを使用してXMLファイルをクエリできません

    いくつかの欠陥があります:

    • FROM OPENXMLは古くなっているため、これ以上使用しないでください(まれな例外が存在します)

    • XMLにはデフォルトの名前空間が含まれており、これを宣言する必要があります

    • XPathが間違っています:/Return/ReturnData/IRS990ScheduleHIRS990ScheduleH/ /Return/ReturnData/IRS990ScheduleH/である必要があります

    しかし、とにかくあなたは現代のXQueryに目を向けるべきです メソッド。次のように試してください:

    -これにより、XMLが宣言された変数に読み込まれます。

    -注意 XMLはutf-8で宣言されています 、これは特殊文字の問題につながる可能性があります...

    DECLARE @x xml
    SELECT @x = R
    FROM OPENROWSET (BULK 'C:\Users\USER\990\Example.xml', SINGLE_BLOB) AS ReturnData(R);
    

    -これはクエリです。.nodes()を使用するよりも、最初に名前空間を宣言します。 および.value()

    WITH XMLNAMESPACES(DEFAULT 'http://www.irs.gov/efile'
                              ,'http://www.w3.org/2001/XMLSchema-instance' AS xsi)
    SELECT ct.value('(FinancialAssistancePolicyInd)[1]','int') AS FinancialAssistancePolicyInd
          ,ct.value('(FPGReferenceDiscountedCareInd)[1]','int') AS FPGReferenceDiscountedCareInd
          ,ct.value('(FinancialAssistanceAtCostTyp/PersonsServedCnt)[1]','int') AS PersonsServedCnt
          ,ct.value('(FinancialAssistanceAtCostTyp/NetCommunityBenefitExpnsAmt)[1]','int') AS NetCommunityBenefitExpnsAmt
    FROM @x.nodes('/Return/ReturnData/IRS990ScheduleH') AS A(ct)
    



    1. 属性は、あるテーブルを別のテーブルの上に指定できますか?

    2. 当日のタイムスタンプを持つ行を選択するにはどうすればよいですか?

    3. OracleUpdateがハングする

    4. 既存の設定を失うことなくMySQLのsql_modeにオプションを追加する方法