logo

SQL |条件式

SQL の条件式は次のとおりです。

    CASE 式 : プロシージャを呼び出さずに IF-THEN-ELSE ステートメントを使用できます。
    単純な CASE 式では、SQL は expr がcomparison_expr に等しい最初の WHEN……THEN ペアを検索し、return_expr を返します。上記の条件が満たされない場合、ELSE 句が存在し、SQL は else_expr を返します。それ以外の場合は、NULL を返します。
    return_expr と else_expr にリテラル null を指定することはできません。すべての式 (expr、comparison_expr、return_expr) は同じデータ型である必要があります。
    構文:



     CASE expr WHEN comparison_expr1 THEN return_expr1 [ WHEN comparison_expr2 THEN return_expr2 . . . WHEN comparison_exprn THEN return_exprn ELSE else_expr] END>

    例:

       Input : SELECT first_name, department_id, salary, CASE department_id WHEN 50 THEN 1.5*salary WHEN 12 THEN 2.0*salary ELSE salary END 'REVISED SALARY' FROM Employee;>

      出力:

    説明 : 上記の SQL ステートメントでは、Department_id の値がデコードされます。 50の場合は給与が1.5倍、12の場合は給与が2倍、それ以外の場合は給与は変わりません。 DECODE 関数 : CASE または IF-THEN-ELSE ステートメントの作業を実行することで、条件付きの問い合わせを容易にします。
    DECODE 関数は、さまざまな言語で使用される IF-THEN-ELSE ロジックと同様の方法で式をデコードします。 DECODE 関数は、各検索値と比較した後、式をデコードします。式が検索と同じ場合、結果が返されます。
    デフォルト値を省略した場合、検索値が結果値のいずれにも一致しない場合は null 値が返されます。
    構文:



     DECODE (col/expression, search1, result1 [, search2, result2,........,] [, default])>
     Input : SELECT first_name, department_id, salary, DECODE(department_id, 50, 1.5*salary, 12, 2.0*salary, salary) 'REVISED SALARY' FROM Employee;>

    出力:

    説明: 上記の SQL ステートメントでは、Department_id の値がテストされます。 50の場合は給与が1.5倍、12の場合は給与が2倍、それ以外の場合は給与は変わりません。

    COALESCE : 最初の非 null 引数を返します。すべての引数が null の場合にのみ、null が返されます。これは、表示用にデータを取得するときに、null 値をデフォルト値に置き換えるためによく使用されます。
    注: CASE 式と同様に、COALESCE も、最初に見つかった null 以外の引数の右側の引数を評価しません。
    構文:

     COALESCE( value [, ......] )>
     Input: SELECT COALESCE(last_name, '- NA -') from Employee;>

    出力:

    説明: - NA - 姓が null の場合は、それぞれの姓が表示されます。 GREATEST: 任意の数の式のリストから最大の値を返します。比較では大文字と小文字が区別されます。リスト内のすべての式のデータ型が同じでない場合、残りのすべての式は比較のために最初の式のデータ型に変換されます。この変換が不可能な場合、SQL はエラーをスローします。
    注記: リスト内のいずれかの式が null の場合は、null を返します。
    構文:



     GREATEST( expr1, expr2 [, .....] )>
    •  Input: SELECT GREATEST('XYZ', 'xyz') from dual;>
       Output: GREATEST('XYZ', 'xyz') xyz>

      説明: 小さいアルファベットの ASCII 値が大きくなります。

    •  Input: SELECT GREATEST('XYZ', null, 'xyz') from dual; Output: GREATEST('XYZ', null, 'xyz') ->

      説明: null が存在するため、(上記の説明で注意したように) null が出力として表示されます。

    IFNULL: expr1 が NULL でない場合は、expr1 を返します。それ以外の場合は expr2 を返します。使用されるコンテキストに応じて、数値または文字列値を返します。
    構文:

     IFNULL( expr1, expr2 )>
    •  Input: SELECT IFNULL(1,0) FROM dual;>
       Output: - 1>

      説明 : したがって、null になる式はありません。

      私のモニターのサイズは何ですか
    •  Input: SELECT IFNULL(NULL,10) FROM dual; Output: -- 10>

      説明: expr1 は null であるため、expr2 が表示されます。

    IN: 値が値のセット内に存在し、WHERE、CHECK、およびビューの作成で使用できるかどうかをチェックします。
    注: CASE 式や COALESCE 式と同様に、IN も最初に見つかった null 以外の引数の右側の引数を評価しません。
    構文:

     WHERE column IN ( x1, x2, x3 [,......] )>
     Input: SELECT * from Employee WHERE department_id IN(50, 12);>

    出力:

    説明: 従業員のすべてのデータは部門 ID 50 または 12 で表示されます。

    LEAST: 任意の数の式のリストから最小値を返します。比較では大文字と小文字が区別されます。リスト内のすべての式のデータ型が同じでない場合、残りのすべての式は比較のために最初の式のデータ型に変換されます。この変換が不可能な場合、SQL はエラーをスローします。
    注: リスト内のいずれかの式が null の場合は、null を返します。

    構文:

     LEAST( expr1, expr2 [, ......] )>
    •  strong>入力: SELECT LEAST('XYZ', 'xyz') からデュアル;出力: LEAST('XYZ', 'xyz') XYZ>>' 

      説明: 大文字のアルファベットの ASCII 値は小さくなります。

      JavaでCSVファイルから読み取る方法
    • 説明: null が存在するため、(上記の説明で注意したように) null が出力として表示されます。

    NULLIF: value1=value2 の場合は null 値を返し、それ以外の場合は value1 を返します。
    構文:

     NULLIF( value1, value2 )>

    例:

     Input: SELECT NULLIF(9995463931, contact_num) from Employee;>

    出力:

説明: 指定された番号と一致する従業員には NULL が表示されます。残りの従業員については、value1 が返されます。