SQL函数 ISNUMERIC
测试有效数字的数值函数。
大纲
代码语言:javascript复制ISNUMERIC(check-expression)
参数
-
check-expression
- 要计算的表达式。
ISNUMERIC
返回SMALLINT
数据类型。
描述
ISNUMERIC
计算check-expression
并返回下列值之一:
- 如果
check
表达式是有效数字,则返回1。有效数字可以是数字表达式,也可以是表示有效数字的字符串。- 数值表达式首先转换为规范形式,解析多个前导符号;因此,诸如
- 34
这样的数值表达式是有效的数字。 - 在求值之前不会转换数字字符串。数字字符串最多只能有一个前导符号才能计算为有效数字。带有尾随小数点的数字字符串的计算结果为有效数字。
- 数值表达式首先转换为规范形式,解析多个前导符号;因此,诸如
- 如果
check-expression
不是有效数字,则返回0。任何包含非数字字符的字符串都不是有效数字。具有多个前导符号的数字字符串(如‘ - 34’
)不会被计算为有效数字。编码列表始终返回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
时,这两个函数返回不同的值。
示例
在下面的示例中,所有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
1 1 1 1 1 1
如果FavoriteColors
为NULL
,则下面的示例返回NULL
;否则返回0
,因为FavoriteColors
不是数值字段:
SELECT Name,
ISNUMERIC(FavoriteColors) AS ColorPref
FROM Sample.Person