Published on InterSystems Developer Community (https://community.intersystems.com)

主页 > 第六十七章 SQL函数 ISNUMERIC

文章
姚 鑫 · 二月 27, 2022 阅读大约需 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-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
#SQL #Caché

源 URL:https://cn.community.intersystems.com/post/%E7%AC%AC%E5%85%AD%E5%8D%81%E4%B8%83%E7%AB%A0-sql%E5%87%BD%E6%95%B0-isnumeric