IsNumeric() 判断是否为数字,常见错误
(2009-09-23 15:05:37)
标签:
it |
分类: 收藏夹 |
VBS中,IsNumeric()函数的实际作用是判断参数表达式是否是数值,而这个所谓的“数值”不仅仅包含普通的数字,还包括(但可能不限于)如下情况:
科学计数法表达式,如“2e7”和“2d7”;
十六进制数,如“&H0A”;
八进制数,如“&6”;
当前区域下设置的货币金额表达式,如“¥12.44”;
加圆括号的数字,如“(34)”;
显式指定正负的数字,如“+2.1”和“-2.1”;
含有逗号的数字字符串,如“12,25”。
不仅仅是VBS,JScript/JavaScript的isNaN()也存在类似问题,T-SQL中的IsNumeric()同样如此!
大家可以自行研究。所以,如果你已经开始对自己以前的写过的程序有些不放心了,那么以后还是自己实现一个函数来验证表达式是否是数字比较稳妥。
select isnumeric('3D55')
select isnumeric('3055')
select isnumeric('abce')
1
1
0
ISNUMERIC函数的作用是确定表达式是否为一个有效的数字类型。
语法:
ISNUMERIC ( expression_r )
--备注
--如果输入表达式的计算值为有效的整数、浮点数、money 或 decimal 类型时,ISNUMERIC 返回 1;否则返回
0。返回值为 1 时,指示可将 expression_r 至少转换为上述数值类型中的一种。
select
isnumeric('1e-2'),
isnumeric('1e+2'),
isnumeric('1e2'),
isnumeric('1.1'),
isnumeric('-1.1'),
isnumeric('+1.1'),
isnumeric('$12'),
isnumeric('¥12')
--在单纯判断字段是否只含有数字的情况下用这个函数,可能会有以上情况干扰
--必要的情况下,应该使用
select * from [Table] where patindex('%[^0-9]%',a)=0
--或者