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

Where句内のIfステートメント

    ケースはあなたを助けるかもしれません:

    SELECT t.first_name,
           t.last_name,
           t.employid,
           t.status
      FROM employeetable t
     WHERE t.status = (CASE WHEN status_flag = STATUS_ACTIVE THEN 'A'
                            WHEN status_flag = STATUS_INACTIVE THEN 'T'
                            ELSE null END)
       AND t.business_unit = (CASE WHEN source_flag = SOURCE_FUNCTION THEN 'production'
                                   WHEN source_flag = SOURCE_USER THEN 'users'
                                   ELSE null END)
       AND t.first_name LIKE firstname
       AND t.last_name LIKE lastname
       AND t.employid LIKE employeeid;
    

    CASEステートメントは、複数の条件を評価して単一の値を生成します。したがって、最初の使用法では、status_flagの値を確認し、その値に応じて「A」、「T」、またはnullを返し、それをt.statusと比較します。 2番目のCASEステートメントを使用してbusiness_unit列についても同じことを行います。



    1. mysqlトランザクション-例外があればロールバックします

    2. mysqlルートパスワードを忘れた

    3. 数値を小数点以下2桁にフォーマットします

    4. Oracleでの時間のない日付タイプ