TABLE 33. 条件式
データベース
|
構文
|
説明
|
Oracle
|
|
式 (comp_exp)を検索値 (search_exp1, ..., search_expN)とひとつづつ比較し、もし式 (comp_exp)が検索値と等しい場合には対応する結果 (result_exp1, ..., result_expN)を返します。もし一致しない場合にはデフォルト (default_exp)を返します。またデフォルトが省略されている場合にはNULLを返します。
comp_exp, search_exp および result_exp のデータタイプは CHAR、VARCHAR2、NCHAR、NVARCHAR2 のデータタイプです。戻される文字列は、VARCHAR2 データ型で、最初のresult パラメータと同じキャラクタ・セットの文字列です。
search_exp, result_exp および default_exp の値は式から導出されます
比較をおこなう前に、DECODE は comp_exp と各検索値 (search_exp) を、最初のsearch 値のデータ型に自動的に変換します。また、戻り値を最初のresult (result_exp) と同じデータ型に自動的に変換します。最初のresult のデータ型がCHAR の場合、または最初のresult がNULL の場合、Oracle は戻り値をVARCHAR データ型の値に変換します
DECODE関数は、2 つのNULL を同等とみなします。comp_exp がNULL の場合、DECODE は最初の検索値のresult もNULL として返します。
DECODE関数のコンポーネントの最大数は、comp_exp、検索 (search_exp1, ..., search_expN)、results (result_exp1, ..., result_expN)、default (default_exp) を含めて255 です。
|
例
|
DECODE (emp_type, 1, `clerk', 2, `book-keeper', `Unknown')
|
|
|
式(comp_exp)と各検索値(search_exp1, ..., search_expN)をひとつづつ比較し、もし式(comp_exp)が検索値と一致する場合には対応する結果(result_exp1, ..., result_expN) を返します。もし一致しない場合にはデフォルト値(default_exp)を返します。デフォルト値が省略されている場合はNULLを返します。
全ての式 (comp_exp、search_exp および result_exp) のデータ型は CHAR、VARCHAR2、NCHAR、NVARCHAR2 のいずれかです。
|
Example:
|
CASE emp_type
WHEN 1 THEN `clerk'
WHEN 2 THEN `book-keeper'
ELSE `Unknown'
END
|
|
条件(condition_exp)を左から右に順に検索し、条件が真である場合にresult_expを返します。もし条件を満たさない場合にはデフォルト (default_exp)を返します。デフォルトが省略されている場合には NULL を返します。
|
例:
|
CASE WHEN salary>500 THEN salary
WHEN salary<200 THEN 200
ELSE 500
END
|
MySQL
|
|
式 (comp_exp) を各検索値 (search_exp1, ..., search_expN) とひとつづつ比較し、もし式 (comp_exp) が検索値と一致する場合には対応する結果 (result_exp1, ..., result_expN) をかえします。もし一致しない場合にはデフォルト (default_exp) を返します。デフォルトが省略されている場合には NULL を返します。
return value のデータタイプは最初の返却値と同じ (最初のTHENの後の式)ものです。
|
Example:
|
|
|
CASE workgroup
WHEN A THEN `Administration'
WHEN B THEN `Book-keeping'
WHEN C THEN `Customer department'
ELSE `Others'
END
|
|
左から右に検索し条件 (condition_exp) が真の場合にresult_expを返します。もし条件を満たさない場合にはデフォルト (default_exp) を返します。デフォルトが省略されている場合にはNULLを返します。
return value のデータタイプは最初に返される値 (最初のTHEN の後の式) と同じです。
|
例:
|
CASE
WHEN salary between 200 and 500 THEN 500
WHEN salary<200 THEN 200
ELSE salary
END
|
Microsoft SQL Server
|
|
式 (comp_exp) をそれぞれの検索値 (search_exp1, ..., search_expN) とひとつづつ比較し、もし式 (comp_exp) が検索値と等しい場合には対応する結果 (result_exp1, ..., result_expN) を返します。もし一致しない場合にはデフォルト (default_exp)を返します。デフォルトが省略されている場合には NULL を返します。
結果のデータタイプ: 結果result_exp の中で最も優先度の高いデータ型または default_expを選択
|
例:
|
CASE level
WHEN 1 THEN `First level'
WHEN 2 THEN `Second level'
WHEN 3 THEN `Third level'
ELSE `Top level'
END
|
|
|
左から右に検索し条件 (condition_exp) が真の場合に対応する結果 result_expを返します。もし条件を満たさない場合、デフォルト (default_exp) を返します。デフォルトが省略されている場合には NULL をかえします。
結果のデータタイプ: 結果result_exp の中で最も優先度の高いデータ型または default_expを選択
|
例:
|
CASE WHEN price IS NULL
THEN 'Not yet priced'
WHEN price < 10
THEN 'Very Reasonable Title'
WHEN price >= 10 and price < 20
THEN 'Coffee Table Title'
ELSE 'Expensive book!'
END
|
IBM DB2
|
|
式 (comp_exp) を検索値 (search_exp1, ..., search_expN) とひとつづつ比較し、もし式 (comp_exp) が検索値と一致する場合には対応する結果 (result_exp1, ..., result_expN) を返します。もし一致しない場合、デフォルト (default_exp) を返します。デフォルトが省略されている場合には NULL を返します。
|
Example:
|
CASE credit_limit
WHEN 100 THEN 'Low'
WHEN 5000 THEN 'High'
ELSE 'Medium'
END
|
|
左から右に検索し条件 (condition_exp) が真の場合、対応する結果 result_exp を返します。もし条件を満たさない場合、デフォルト (default_exp) を返します。 デフォルトが省略されている場合 NULL を返します。
|
例:
|
CASE
WHEN1>0 THEN 'true'
ELSE `false'
END
|