次のセクションでは、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標準ではなく、一般的な拡張機能であることに注意してください。