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

Oracleのxmltype列内の既存のデータのxmlタグを追加および削除する方法

    AppendChildXML および deleteXML 。

    この例では、最初の部分はさらに1つのタグを含むXMLを返し、2番目の列は[...]:

    の間の条件に一致するタグを削除します。
    with xmlTab(val) as (
        select xmlType('<employee>
          <id>FMCSC00015</id>
          <year>2016</year>
          <month>1</month>
          <PAYMSTR_SALHDNM>BASIC PAY</PAYMSTR_SALHDNM>
          <PAYMSTR_AMOUNT>35600</PAYMSTR_AMOUNT>
          <PAYMSTR_SALHDNM>ASSOCIATION SUBSCRIPTION</PAYMSTR_SALHDNM>
          <PAYMSTR_AMOUNT>240</PAYMSTR_AMOUNT>
          <PAYMSTR_SALHDNM>TELEPHONE ALLOWANCE</PAYMSTR_SALHDNM>
          <PAYMSTR_AMOUNT>800</PAYMSTR_AMOUNT>
          <PAYMSTR_SALHDNM>HOUSE RENT DEDUCTION</PAYMSTR_SALHDNM>
          <PAYMSTR_AMOUNT>2587.5</PAYMSTR_AMOUNT>
          <PAYMSTR_SALHDNM>MEDICAL ALLOWANCE</PAYMSTR_SALHDNM>
          <PAYMSTR_AMOUNT>700</PAYMSTR_AMOUNT>
          <PAYMSTR_SALHDNM>GAS BILL</PAYMSTR_SALHDNM>
          <PAYMSTR_AMOUNT>450</PAYMSTR_AMOUNT>  
          <PAYMSTR_SALHDNM>LIFE INSURANCE PREMIUM (D)</PAYMSTR_SALHDNM>
          <PAYMSTR_AMOUNT>1718</PAYMSTR_AMOUNT>  
        </employee>')
        from dual
        )
        select APPENDCHILDXML( val,
                               'employee',
                               XMLType('<PAYMSTR_SALHDNM>SONALI BANK LOAN-4</PAYMSTR_SALHDNM>')
                             ) as APPEND,  
               DELETEXML(val,'/employee/PAYMSTR_AMOUNT[.="1718"]') AS DEL
        from xmlTab
    

    追加するXMLは、たとえば次のように、別のテーブルからデータを読み取ることによって動的に構築できます。

    with test as 
    (
        select 'PAYMSTR_SALHDNM' tag, 'SONALI BANK LOAN-4' val from dual union all
        select 'PAYMSTR_SALHDNM' tag, 'GAS BILL' val from dual
    )     
    select XMLELEMENT(tag, val) from test
    



    1. java.sql.SQLException:mysqlの結果セットの終了後

    2. EclipseからMySQLに接続する(CDT)

    3. Visual Studio2015Oracle接続の問題のSSDT

    4. データを更新するためのPDOのフォーム