DECODE
構文
目的
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です。
関連項目:
-
比較セマンティクスについては、データ型の比較規則を参照してください。
-
データ型変換の概要は、データ変換を参照してください。
-
浮動小数点の比較セマンティクスの詳細は、浮動小数点数を参照してください。
-
暗黙的な変換のデメリットの詳細は、暗黙的なデータ変換と明示的なデータ変換を参照してください。
-
expr
式の文字をsearch
の文字と比較するためにDECODE
で使用する照合を定義する照合決定ルール、およびこのファンクションの戻り値が文字値である場合に、それに割り当てる照合を定義する照合導出ルールは、『Oracle Databaseグローバリゼーション・サポート・ガイド』の付録Cを参照してください。
例
この例では、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";