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

Oracle:2つの異なるクエリをLIKEとINの1つにマージ

    すでにコメントしたように、いくつかの条件を連結する方が簡単です。

    where departmentName like '%Medi%'
       or departmentName like '%Ciga%'
       or departmentName like '%Tabacc%';
    

    もう1つの方法は、これらの値'%Medi%'、'%Ciga%'、および'%Tabacc%'をconditionTableに挿入してから、次のクエリを実行することです。

    select department.*
      from department
     cross join conditionTable
     where department.departmentName like conditionTable.value;
    

    ここでは、テーブルがdepartmentであると想定しています。 そして、conditionTableに列valueがあること 。このソリューションを実装する場合は、同時実行性に注意し、conditionTableを次のようなものでフィルタリングする必要があります

    select department.*
      from department
     inner join conditionTable on conditionTable.session = yourSessionId
     where department.departmentName like conditionTable.value;
    

    最後に、conditionTableを使用したくない場合に便利な、3番目の解決策は、文字列select <cond1> as value from dual union select <cond2> from dual...

    として動的クエリに配置されます
    select department.*
      from department
     cross join
       (select '%Medi%' as value from dual
         union
        select '%Ciga%' from dual
         union
        select '%Tabacc%' from dual) conditionTable
     where department.departmentName like conditionTable.value;
    



    1. count(*)列のmin()を取得する

    2. このSELECTCONCAT/ GROUP BYクエリを高速化するにはどうすればよいですか?

    3. 最初にインデックスを削除せずにMySQL列を削除するとどうなりますか?

    4. ダイナミッククリスタルサブレポート