Table of ContentsPreviousNext

Ispirer             Ispirer


Ispirer SQLWays データベース移行ソフトウェア

条件式

このサブセクションでは、様々なデータベースの式と検索値をひとつづつ比較し結果を返す関数とそのSQLWaysによる変換について記述します。

TABLE 33. 条件式
データベース
構文
説明
Oracle
DECODE (comp_exp, 
search_exp1, result_exp1 [, 
search_expN, result_expN]...  
[, default_exp]) 
式 (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')
 
CASE comp_exp  
WHEN search_exp1 THEN 
result_exp1 [WHEN 
search_expN THEN 
result_expN]...  
[ELSE default_exp] END 
式(comp_exp)と各検索値(search_exp1, ..., search_expN)をひとつづつ比較し、もし式(comp_exp)が検索値と一致する場合には対応する結果(result_exp1, ..., result_expN) を返します。もし一致しない場合にはデフォルト値(default_exp)を返します。デフォルト値が省略されている場合はNULLを返します。
 
全ての式 (comp_expsearch_exp および result_exp) のデータ型は CHAR、VARCHAR2、NCHAR、NVARCHAR2 のいずれかです。
Example:
CASE emp_type
WHEN 1 THEN `clerk'
WHEN 2 THEN `book-keeper'
ELSE `Unknown'
END
CASE WHEN condition_exp1 
THEN result_exp1  
[WHEN condition_expN THEN 
result_expN]...  
[ELSE default_exp] END 
条件(condition_exp)を左から右に順に検索し、条件が真である場合にresult_expを返します。もし条件を満たさない場合にはデフォルト (default_exp)を返します。デフォルトが省略されている場合には NULL を返します。
:
CASE WHEN salary>500 THEN salary
WHEN salary<200 THEN 200
ELSE 500
END
MySQL
CASE comp_exp  
WHEN search_exp1 THEN 
result_exp1 [WHEN 
search_expN THEN 
result_expN]...  
[ELSE default_exp] END 
式 (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
CASE WHEN condition_exp1 
THEN result_exp1  
[WHEN condition_expN THEN 
result_expN]...  
[ELSE default_exp] 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
CASE comp_exp  
WHEN search_exp1 THEN 
result_exp1 [WHEN 
search_expN THEN 
result_expN]...  
[ELSE default_exp] END 
式 (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
 
CASE WHEN condition_exp1 
THEN result_exp1  
[WHEN condition_expN THEN 
result_expN]...  
[ELSE default_exp] 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
CASE comp_exp  
WHEN search_exp1 THEN 
{result_exp1 | NULL}  
[WHEN search_expN THEN 
{result_expN | NULL}]...  
[ELSE default_exp] END 
式 (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
CASE WHEN condition_exp1 
THEN {result_exp1 | NULL}  
[WHEN condition_expN THEN 
{result_expN | NULL}]...  
[ELSE default_exp] END 
左から右に検索し条件 (condition_exp) が真の場合、対応する結果 result_exp を返します。もし条件を満たさない場合、デフォルト (default_exp) を返します。 デフォルトが省略されている場合 NULL を返します。
:
CASE
WHEN1>0 THEN 'true'
ELSE `false'
END


Table of ContentsPreviousNext
Ispirer             Ispirer
Copyright © 1999-2015 Ispirer Systems Ltd. Ispirer and SQLWays are trademarks of Ispirer Systems Ltd. All other product names may be trademarks of the respective companies. All rights reserved.