ISNUMERIC (SQL)
構文
ISNUMERIC(check-expression)
概要
ISNUMERIC は check-expression を評価し、以下の値のいずれかを返します。
-
check-expression が有効な数字であれば 1 を返します。有効な数は、数値式、または有効な数を表す文字列のいずれかです。
-
数値式はまずキャノニック形式に変換され、複数の先頭の符号を解決します。したがって、+-+++34 などの数値式は有効な数になります。
-
数値文字列は、評価前に変換されることはありません。数値文字列は、有効な数として評価されるには、先頭の符号が最大で 1 つでなければなりません。末尾の小数点がある数値文字列は、有効な数として評価されます。
-
-
check-expression が有効な数字でなければ 0 を返します。非数値文字を含む文字列は、有効な数字ではありません。先頭に複数の符号がある数値文字列 ('+-+++34' など) は、有効な数として評価されません。InterSystems IRIS のエンコード・リストは、その要素が有効な数であっても、常に 0 を返します。空の文字列 ISNUMERIC('') は 0 を返します。
-
check-expression が NULL の場合、NULL を返します。ISNUMERIC(NULL) は NULL を返します。
科学的記数法の指数が 308 (308 – (整数の数 - 1)) より大きい場合、ISNUMERIC では、指数が範囲外であることを示す SQLCODE -7 エラーが生成されます。例えば ISNUMERIC(1E309) や ISNUMERIC(111E307) は、どちらもこのエラー・コードを生成します。指数数値文字列が '1E145' 以下である場合は 1 を返し、'1E145' より大きい場合は 0 を返します。
ISNUMERIC 関数は ObjectScript の $ISVALIDNUM 関数とよく似ています。しかし、入力値が NULL の場合、2 つの関数は異なる値を返します。
引数
check-expression
評価される式。
例
以下の例では、ISNUMERIC 関数はすべて 1 を返します。
SELECT ISNUMERIC(99) AS MyInt,
ISNUMERIC('-99') AS MyNegInt,
ISNUMERIC('-0.99') AS MyNegFrac,
ISNUMERIC('-0.00') AS MyNegZero,
ISNUMERIC('-0.09'+7) AS MyAdd,
ISNUMERIC('5E2') AS MyExponent
以下の例では、FavoriteColors が NULL の場合は NULL を返し、それ以外の場合は FavoriteColors が数値フィールドでないため 0 を返します。
SELECT Name,
ISNUMERIC(FavoriteColors) AS ColorPref
FROM Sample.Person
関連項目
-
IFNULL 関数
-
ISNULL 関数
-
NULLIF 関数
-
ObjectScript 関数: $ISVALIDNUM