すべてのプロダクト
Search
ドキュメントセンター

PolarDB:条件式

最終更新日:Jun 05, 2024

次のセクションでは、PolarDB for PostgreSQL (Compatible with Oracle) で使用できるSQL準拠の条件式について説明します。

CASE

SQLのCASE式は、他のプログラミング言語のif/elseステートメントと同様に、一般的な条件式です。

条件があったときの
ケース結果
   [いつ...]
   [ELSE結果]
終了 

CASE句は、式が有効な場合はいつでも使用できます。 条件はBOOLEAN結果を返す式です。 結果がTRUEの場合、CASE式の値は条件に従う結果になります。 結果がFALSEの場合、後続のWHEN句が同じ方法で検索されます。 WHEN条件がTRUEでない場合、CASE式の値はELSE句の結果です。 ELSE句が省略され、条件が一致しない場合、結果はNULLになります。

SELECT * テストから;

 a
---
 1
 2
 3
(3行)

SELECT a,
    a=1次に「1」の場合
         a=2のとき「2つ」
         ELSE「その他」
    終了
テストから;

 a | ケース
--- --------
 1 | 1
 2 | two
 3 | その他
(3行) 

すべての結果式のデータ型は、単一の出力型への変換をサポートする必要があります。

次の「単純な」CASE表現は、上記の一般的な形式の特殊な変形です。

CASE式
    WHEN値THEN結果
  [いつ...]
  [ELSE結果]
終了 

が計算され、一致が見つかるまでWHEN句のすべての値の仕様と比較されます。 一致するものが見つからない場合、ELSE句の結果 (またはnull値) が返されます。

上記の例は、単純なCASE構文を使用して記述できます。

SELECT a,
    1が「1つ」の場合
           WHEN 2 THEN 'two'
           ELSE「その他」
    終了
テストから;

 a | ケース
--- --------
 1 | 1
 2 | two
 3 | その他
(3行) 

CASE式は、結果の決定に使用されない部分式を評価しません。 たとえば、次の方法を使用すると、ゼロ除算の失敗を回避できます。

SELECT... WHEREケースx <> 0 THEN y/x > 1.5 ELSE false END; 

COALESCE

COALESCE関数は、nullではない最初の引数を返します。 Nullは、すべての引数がnullの場合にのみ返されます。

COALESCE(value [, value2 ] ... )

この関数は、データが表示またはさらなる計算のために取得されるときに、デフォルト値をnull値に置き換えるためによく使用されます。 設定例:

SELECT COALESCE(description、short_description、'(none)') ...

CASE式としてのSamは、結果を決定するために使用されない引数を評価しません。 最初のnull以外の引数の右側の引数は評価されません。 このSQL標準関数は、NVLおよびIFNULLと同様の機能を提供し、他のいくつかのデータベースシステムで使用できます。

NULLIF

NULLIF関数は、value1とvalue2が等しい場合、null値を返します。 値が等しくない場合、value1が返されます。

NULLIF(valuel, value2)

この関数は、前述のCOALESCEの例の逆演算を実行するために使用できます。

SELECT NULLIF(value1, '(none)') ...

value1が (none) の場合、null値が返されます。 それ以外の場合、value1が返されます。

NVL

NVL関数は、nullではない最初の引数を返します。 この関数は最初の式を評価します。 その式がnullに評価された場合、NVLは2番目の式を返します。

NVL(exprl、expr2)

戻り値の型は引数の型と同じです。 すべての引数は同じデータ型である必要があります (または共通データ型への変換をサポートする必要があります) 。 すべての引数がnullの場合、NVLはnullを返します。

次の例では、手数料のない従業員のボーナスを計算します。 従業員がコミッションを受け取った場合、この式は従業員のコミッションを返します。 従業員が手数料を受け取らない場合 (手数料がnullの場合) 、この式は従業員の給与の10% に等しいボーナスを返します。

ボーナス=NV L(emp.comミッション、emp.salary * 。10)

NVL2

NVL2は式を評価し、最初の式の値に応じて2番目または3番目の式を返します。 最初の式がnullでない場合、NVL2はexpr2の値を返します。 最初の式がnullの場合、NVL2はexpr3の値を返します。

NVL2(expr1, expr2, expr3)

戻り値の型は引数の型と同じです。 すべての引数は同じデータ型である必要があります (または共通データ型への変換をサポートする必要があります) 。

次の例では、手数料を受け取る従業員のボーナスを計算します。 従業員がコミッションを受け取った場合、この式は従業員のコミッションの110% に等しい金額を返します。 従業員が手数料を受け取らない場合 (手数料がnullの場合) 、この式は0を返します。

ボーナス=NVL2(emp.comミッション、emp.comミッション * 1-1, 0)

最高かつ最低

GREATESTおよびLEAST関数は、任意の数の式のリストから最大値または最小値を選択します。

GREATEST(value [, value2 ] ... )

LEAST(value [, value2 ] ... ) 

式は、結果のデータ型となる共通データ型への変換をサポートする必要があります。 リスト内のNull値は無視されます。 結果は、すべての式がnullに評価された場合にのみnullになります。

GREATESTおよびLEAST関数はSQL標準ではなく、一般的な拡張機能であることに注意してください。