码迷,mamicode.com
首页 > 数据库 > 详细

sqlserver判断字符串是否是数字

时间:2016-06-28 23:42:17      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:

sql2005有个函数ISNUMERIC(expression)函数:当expression为数字时,返回1,否则返回0。这只是一个菜鸟级的解决办法,大多数情况比较奏效。

eg:

select ISNUMERIC(123) --结果为1

但是,该函数有个缺点!

eg:

 SELECT 
 ,ISNUMERIC(-) as -    --1
 ,ISNUMERIC(+) as +    --1
 ,ISNUMERIC($) as $    --1
 ,ISNUMERIC(.) as .    --1
 ,ISNUMERIC(,) as ,    --1
 ,ISNUMERIC(\) as \    --1
 ,ISNUMERIC(2D3) AS 2D3--1
,ISNUMERIC(1d1) AS 1d1--1
,ISNUMERIC(1e1) AS 1e1--1
,ISNUMERIC(d) AS d   --0

当含有美元符、加减号、逗号等符号时,或者D、E的前后均出现数字时,也会返回1,这就比较头疼了。标点符号倒是好理解,为什么d,e这种情况,真是不理解微软设计的意图。

有什么好的解决办法吗?当然了,请看下面

方法:通配符。高逼格使用。

适用场景:2005及以上(2005之前的版本没试过,应该也支持)

 --返回0-则为纯数字(支持正负数,小数点)
 SELECT PATINDEX(%[^0-9|.|-|+]%,2.2)--返回0

 --返回0-则为纯整数
select PATINDEX(%[^0-9]%, 2.2)--返回非0

sqlserver判断字符串是否是数字

标签:

原文地址:http://www.cnblogs.com/zjfblog/p/5625202.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!