文章
姚 鑫 · 二月 27 阅读大约需 2 分钟

第六十七章 SQL函数 ISNUMERIC

第六十七章 SQL函数 ISNUMERIC

测试有效数字的数值函数。

大纲

ISNUMERIC(check-expression)

参数

  • check-expression - 要计算的表达式。

ISNUMERIC返回SMALLINT数据类型。

描述

ISNUMERIC计算check-expression并返回下列值之一:
- 如果check表达式是有效数字,则返回1。有效数字可以是数字表达式,也可以是表示有效数字的字符串。
- 数值表达式首先转换为规范形式,解析多个前导符号;因此,诸如+-+34这样的数值表达式是有效的数字。
- 在求值之前不会转换数字字符串。数字字符串最多只能有一个前导符号才能计算为有效数字。带有尾随小数点的数字字符串的计算结果为有效数字。
- 如果check-expression不是有效数字,则返回0。任何包含非数字字符的字符串都不是有效数字。具有多个前导符号的数字字符串(如‘+-+34’)不会被计算为有效数字。编码列表始终返回0,即使其元素是有效数字也是如此。空字符串ISNUMERIC(‘’)返回0。
- 如果check-expressionNULL,则返回NULLISNUMERIC(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

如果FavoriteColorsNULL,则下面的示例返回NULL;否则返回0,因为FavoriteColors不是数值字段:

SELECT Name,
ISNUMERIC(FavoriteColors) AS ColorPref
FROM Sample.Person
0
0 11
讨论 (0)1
登录或注册以继续