IS関数は、値が特定の型として有効かどうか(型変換が正しく行われるかどうか)を調べ、有効なら1、無効なら0を返す関数群です。日付型と数値型を調べられます。
- 日付として有効か調べる~ISDATE -
機能:値が日付として有効かどうかを調べます。
書式:ISDATE(<値>)
引数:調べる値。基本的に文字列(varchar型に変換されます)。
戻り値:int型。日付として有効なら1、そうでなければ0。
例)
戻り値1を返す場合(有効)
ISDATE('65/03/21')
ISDATE('650321')
ISDATE('3月21日')
ISDATE('65.03.21')
ISDATE('65/03/21')
戻り値0を返す場合(無効)
ISDATE('65/18/21')
ISDATE('65/03/51')
ISDATE('三月二十一日')
ISDATE関数の戻り値が1であった場合には、調べた値をCONVERT関数で日付/時刻型に変換できます。
- 数値型として有効かどうか調べる~ISNUMERIC -
機能:値が数値型として有効かどうかを調べます。
書式:ISNUMERIC(<値>)
引数:調べる値。基本的に文字列(varchar型に変換されます)。
戻り値:int型。数値型(整数型、浮動小数点型、通貨型、decimal型)として有効なら1、そうでなければ0。
例)
戻り値1を返す場合(有効)
ISNUMERIC('123456')
ISNUMERIC('123.456')
ISNUMERIC('123,456.00')
ISNUMERIC('\123,456')
ISNUMERIC('$123456.30')
ISNUMERIC('1.234e+000')
戻り値0を返す場合(無効)
ISNUMERIC('%123,456')
ISNUMERIC('123,456円')
ISNUMERIC関数の戻り値が1であった場合には、調べた値をCONVERT関数で整数型、浮動小数点型、通貨型、decimal型に変換できます。
- NULL値を置き換える~ISNULL -
機能:値がNULLかどうかを調べ、NULLの場合には他の値に置き換えます。
書式:ISNULL(<値>,<置換値>)
引数
<値>:NULLかどうかを調べる値
<置換値>:<値>がNULLのとき置き換える値。<値>と同じデータ型とします。
戻り値:<置換値>
例)テーブル「得意先_mr」の「FAX」フィールドがNULL値の場合、「★未入力です★」の文字列を表示します。
SELECT 氏名, 電話,
ISNULL(FAX, '★未入力です★') AS FAX番号
FROM 得意先_mr
ISNULL関数はISDATEやISNUMERIC関数とは異なり、0または1ではなく変換後の値を返します。
- NULL値かどうか調べる -
ISNULL関数は値がNULLの場合に内容を置き換えます。単純にあるフィールドの値がNULLかどうかを調べるには、IS NULLまたはIS NOT NULLを使います。これらは関数ではなくIS句の一種です。
機能:値がNULLかどうかを調べます。
書式:<値> IS [ NOT ]NULL
引数:NULLかどうかを調べる値
戻り値
IS NULL:<値>がNULLの場合はTRUE、そうでなければFALSE。
IS NOT NULL:<値>がNULLでなければTRUE、NULLの場合はFALSE。
例1)テーブル「得意先_mr」の中で「FAX」フィールドがNULL(未入力)となっているレコードを抽出します。
SELECT お客様ID, 氏名, 電話, FAX
FROM 得意先_mr
WHERE FAX IS NULL
IS NULLとIS NOT NULL句を使った式はISDATEやISNUMERIC関数とは異なり、0または1ではなく論理値TRUEまたはFALSEを返します。
例2)テーブル「得意先_mr」の中で「住所2」フィールドに値が保持されている(NULLではない)レコードを抽出します。
SELECT お客様ID, 氏名, 住所1, 住所2
FROM 得意先_mr
WHERE 住所2 IS NOT NULL
NULL値を許容する設定をしたフィールドには、未入力時にはNULLが保持された状態となっています。そのため、WHERE句の条件式にIS NULL句やIS NOT NULL句を使えば、特定のフィールドの値が未入力となっているレコードを抽出できます。
また、例2)のような使い方をすれば、データの入っているフィールドが多いレコードだけ表示や印刷のレイアウトを変更する──といった小技に応用できます。
なお、=や!=といった比較演算子でフィールドの値がNULLであるかどうかを調べることはできません。比較演算子では、比較する値のいずれか一方がNULLの場合に「不明」を意味するUNKNOWNが返ってきます。
|
|
|