次の一連の例では、WHERE句の検索条件でのDEFAULT関数を示しています。
これらの例では、次のテーブル定義があることを前提にしています。
CREATE TABLE table14 ( col1 INTEGER, col2 INTEGER DEFAULT 10, col3 INTEGER DEFAULT 20, col4 CHARACTER(60) ); CREATE TABLE table15 ( col1 INTEGER , col2 INTEGER NOT NULL, col3 INTEGER NOT NULL DEFAULT NULL, col4 INTEGER CHECK (col4 > 10) DEFAULT 9 ); CREATE TABLE table16 ( col1 INTEGER, col2 INTEGER DEFAULT 10, col3 INTEGER DEFAULT 20, col4 CHARACTER(60) );
次の文では、DEFAULT関数は、col2のデフォルト値、つまり10と評価されます。
SELECT col2, col3 FROM table16 WHERE col1 < DEFAULT(col2);
次の文は、WHERE句で明示的に定義された検索条件を使用する等価の文です。
SELECT col2, col3 FROM table16 WHERE col1 < 10;
DEFAULT関数は、述部において列名の引数で指定できます。
次の文では、DEFAULT関数は、col3のデフォルト値、つまり20と評価されます。
SELECT col2, col3 FROM table16 WHERE col1 + 9 > DEFAULT(col3)+ 8;
次の文は、WHERE句で明示的に定義された検索条件を使用する等価の文です。
SELECT col2, col3 FROM table16 WHERE col1 + 9 > 20 + 8;
次の問合わせでは、DEFAULT関数はcol3のデフォルト値と評価され、返された値をサブクエリーの結果と比較して、結果を返します。
SELECT col2, col3 FROM table16 WHERE DEFAULT(col3) < ANY (SELECT col2 FROM table14);
式内の比較演算子の各側に条件として1つの列指定と1つのDEFAULT関数がある場合に限り、比較述部で列名の引数を使用せずにDEFAULT関数を指定できます。
次の例では、列参照は1つだけで、DEFAULT関数は直接これと比較されます。したがって、DEFAULT関数はcol2のデフォルト値と評価されます。
SELECT col2, col3 FROM table16 WHERE col2 > DEFAULT;
次の2つの文は、意味の上で等価です。
SELECT col2, col3 FROM table16 WHERE col2 > DEFAULT AND DEFAULT > col3; SELECT col2, col3 FROM table16 WHERE col2 > DEFAULT(col2) AND DEFAULT(col3) > col3;
DEFAULT関数がNULLと評価される場合、既存の比較ルールに従って、IS NULLまたはIS NOT NULL以外の比較演算子とともに使用されたDEFAULT関数を含む条件は、不明な値と評価されます。
以下のテーブル定義を仮定します。
CREATE TABLE table17 ( col1 INTEGER, col2 INTEGER NOT NULL DEFAULT 10, col3 INTEGER DEFAULT NULL );
次の例では、DEFAULT関数はNULLと評価されます。述部はUNKNOWNで、WHERE条件はFALSEであるため、この問合わせでは行は返されません。
SELECT col1 FROM table17 WHERE col1 = DEFAULT;
この例では、DEFAULT関数はNULLと評価されます。最初の条件であるDEFAULT(col3) > 5はUNKNOWNですが、2つ目の条件はTRUEです。したがって、WHERE条件はTRUEになり、文はすべての行をtable17から返します。
SELECT col1, col2 FROM table17 WHERE DEFAULT(col3) > 5 OR DEFAULT(col3) IS NULL;
次の例では、DEFAULT関数はNULLと評価されます。述部はUNKNOWNで、WHERE条件はFALSEです。そのため、この文では行は返されません。
SELECT col1 FROM table17 WHERE col2 < DEFAULT(col3) + 3;
この例では、DEFAULT関数は10と評価され、最初の条件はTRUEです。2つ目の条件DEFAULT(col2) IS NULLはFALSEです。したがって、WHERE条件はTRUEであり、この文ではすべての行がtable17から返されます。
SELECT col1, col2 FROM table17 WHERE DEFAULT(col2) > 5 OR DEFAULT(col2) IS NULL;