構文
用途
DECODE
ファンクションは、expr
と各search
の値を1つずつ比較します。expr
がsearch
と等しい場合、Oracle Databaseは対応するresult
を戻します。一致する値が見つからない場合は、default
を戻します。default
が省略されている場合は、NULLを戻します。
引数は、任意の数値型(NUMBER
、BINARY_FLOAT
、BINARY_DOUBLE
)または文字列型です。
expr
およびsearch
が文字データである場合、Oracleは、非空白埋め比較セマンティクスを使用してそれらを比較します。expr
、search
およびresult
のデータ型は、CHAR
、VARCHAR2
、NCHAR
またはNVARCHAR2
です。戻される文字列は、VARCHAR2
データ型で、最初のresult
パラメータと同じキャラクタ・セットの文字列です。
最初のsearch-result
の組が数値である場合、Oracleはすべてのsearch-result
の式と最初のexpr
を比較して、数値の優先順位が最も高い引数を判断し、残りの引数をそのデータ型に暗黙的に変換して、そのデータ型を戻します。
search
、result
およびdefault
の値は、式から導出できます。Oracle Databaseでは、短絡評価を使用します。データベースは、search
値のいずれかとexpr
を比較する前にすべてのsearch値を評価するのではなく、各search値とexpr
を比較する前にのみ、各search
値を評価します。その結果、expr
と等しいsearch
が見つかると、Oracleはその後のsearch
を評価しません。
比較する前に、Oracleはexpr
と各search
値を、最初のsearch
値のデータ型に自動的に変換します。Oracleは、戻り値を最初のresult
と同じデータ型に自動的に変換します。最初のresult
のデータ型がCHAR
の場合、または最初のresult
がNULLの場合、Oracleは戻り値をVARCHAR2
データ型の値に変換します。
DECODE
ファンクションでは、Oracleは2つのNULLを同等とみなします。expr
がNULLの場合、Oracleは最初のsearch
値のresult
もNULLとして戻します。
DECODE
ファンクションのコンポーネントの最大数は、expr
、search
、result
、default
を含めて255です。
関連項目:
|
例
この例では、warehouse_id
の値をデコードします。warehouse_id
が1の場合「Southlake
」を、warehouse_id
が2の場合は「San Francisco
」を戻します。warehouse_id
が1、2、3、4のいずれでもない場合、ファンクションは「Non domestic
」を戻します。
SELECT product_id, DECODE (warehouse_id, 1, 'Southlake', 2, 'San Francisco', 3, 'New Jersey', 4, 'Seattle', 'Non domestic') "Location" FROM inventories WHERE product_id < 1775 ORDER BY product_id, "Location";