Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

ISNUMERIC

正しい数字かどうかをテストする数値関数。

Synopsis

ISNUMERIC(check-expression)

引数

check-expression 評価される式。

概要

ISNUMERICcheck-expression を評価し、以下の値のいずれかを返します。

  • check-expression が有効な数字であれば 1 を返します。有効な数は、数値式、または有効な数を表す文字列のいずれかです。

    • 数値式はまずキャノニック形式に変換され、複数の先頭の符号を解決します。したがって、+-+++34 などの数値式は有効な数になります。

    • 数値文字列は、評価前に変換されることはありません。数値文字列は、有効な数として評価されるには、先頭の符号が最大で 1 つでなければなりません。末尾の小数点がある数値文字列は、有効な数として評価されます。

  • check-expression が有効な数字でなければ 0 を返します。非数値文字を含む文字列は、有効な数字ではありません。先頭に複数の符号がある数値文字列 ('+-+++34' など) は、有効な数として評価されません。Caché のエンコード・リストは、その要素が有効な数であっても、常に 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 つの関数は異なる値を返します。

以下の例では、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

関連項目

FeedbackOpens in a new tab