SQL函数 ISNUMERIC

2022-04-06 14:51:41 浏览数 (1)

SQL函数 ISNUMERIC

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

大纲

代码语言:javascript复制
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:

代码语言:javascript复制
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不是数值字段:

代码语言:javascript复制
SELECT Name,
ISNUMERIC(FavoriteColors) AS ColorPref
FROM Sample.Person

0 人点赞