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

FOR XML 部分に条件を追加できません

    あなたの言っていることが理解できれば、 Col1 文字列「SUP」が含まれている場合、最終的な XML にこのタグが必要です:

    <ss:Data ss:Type="String">SomethingContainingSup</ss:Data>
    

    それ以外の場合は、次の式が必要です:

    <Data ss:Type="String">SomethingElse</Data>
    

    この SQL フラグメントでそれを取得できると思います:

    SELECT CASE WHEN COL1 LIKE '%SUP%' THEN 'String' END  as [Cell/ss:Data/@ss:Type],
           CASE WHEN Col1 Like '%SUP%' THEN Col1 END as [Cell/ss:Data], 
           CASE WHEN COL1 NOT LIKE '%SUP%' THEN 'String' END  as [Cell/Data/@ss:Type],                    
           CASE WHEN Col1 NOT Like '%SUP%' THEN Col1  END as [Cell/Data],
           ''
    

    うまくいかなかった理由:列 (または XML 要素) の名前を条件付きにすることはできません。最も近い方法は、いずれかの式を null と評価することです。この場合、最終的な XML でレンダリングされません。




    1. PLSQL CASE WHEN 条件

    2. SQLiteでSubstr()がどのように機能するか

    3. NULLの複雑さ–パート2

    4. JSON_KEYS()–MySQLのJSONオブジェクトからキーを返します