|
論理関数は、一定の条件に基づいたデータの操作に使用されます。
関数
|
説明
|
---|---|
COALESCE(expression1, expression2[, ... ])
|
式リストを左から調べて、最初の非ヌル引数を返します。
詳細については、COALESCE も参照してください。
|
IF(predicate, expression1, expression2)
|
述部(predicate)が真の場合は expression1 を返し、そうでない場合は expression2 を返します。
|
NULL( )
|
列をヌル値として設定します。
|
IFNULL(exp, value)
|
exp がヌルの場合は value が返されます。exp がヌルでない場合は exp が返されます。value に指定するデータ型は、exp のデータ型と互換性がなければなりません。
|
ISNULL(exp, value)
|
ヌルを value で示された値に置き換えます。exp はヌルをチェックする式です。value は exp がヌルの場合に返される値です。ヌルでない場合は exp が返されます。value に指定するデータ型は、exp のデータ型と互換性がなければなりません。
|
NULLIF(exp1, exp2)
|
2 つの式が等しくない場合は、exp1 を返します。式が等しい場合、NULLIF はヌル値を返します。
|
COALESCE スカラー関数は 2 つ以上の引数を取り、その式リストを左から調べて最初の非ヌル引数を返します。
10 は SMALLINT として扱われ、ResultType (SQL_SMALLINT, SQL_VARCHAR) は SQL_SMALLINT になります。したがって、結果の型は SQL_SMALLINT になります。
最初のパラメーターは 10 で、この値は結果の型の SQL_SMALLINT へ変換できます。そのため、この例の戻り値は 10 になります。
システム スカラー関数の IF と NULL は、SQL の拡張機能です。
IF を使用すると、条件が真か偽かによって異なる値を入力できます。たとえば、論理値を含む列をバイナリ表記ではなく "True" または "False" で表示するには、次の SQL ステートメントを使用します。
システム スカラー関数の NULL を使用すると、列をヌル値として設定できます。構文は次のとおりです。
たとえば、次の SQL ステートメントは、Capacity をヌル値とする行を Room テーブルに挿入します。
次の例は、ISNULL の値の返し方を示します。
CREATE TABLE t8 (c1 INT, c2 CHAR(10)) INSERT INTO t8 VALUES (100, 'string1') SELECT c1, c2, ISNULL(c1, 1000), ISNULL(C2, 'a string') from t8
SELECT は 100
と 'string1
' を返します。これは、c1 と c2 のどちらにも値が入っており、ヌルではないからです。
SELECT は 1000
と 'a string
' を返します。これは、c1 と c2 のどちらにもヌルが入っているからです。
次のステートメントは、IFNULL および NULLIF スカラー関数の使い方を示します。これらの関数はそれぞれ、ヌルが存在するかしないか、等しいかどうかに従って値の代入を行う場合に使用します。
CREATE TABLE Demo (col1 CHAR(3)) INSERT INTO Demo VALUES ('abc') INSERT INTO Demo VALUES (NULL) INSERT INTO Demo VALUES ('xyz')
2 番目の行がヌル値を含んでいるので、その場所に 'foo' が代入されます。
この結果、1 つの列から 3 行がフェッチされます。
最初の行に "abc" が含まれており、これは、次の NULLIF 呼び出しの第 2 引数と合致します。
その場所にヌルが返されます。
|