加载中…
个人资料
幻影飞狐
幻影飞狐
  • 博客等级:
  • 博客积分:0
  • 博客访问:1,040
  • 关注人气:16
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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

--或者  not like  '%[^0-9]% '

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有