sqlserver判断字符串是否是数字

Posted 我是真的大米

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqlserver判断字符串是否是数字相关的知识,希望对你有一定的参考价值。

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判断字符串是否是数字的主要内容,如果未能解决你的问题,请参考以下文章

SqlServer判断表中某列是否包含中文,英文,纯数字

MySQL、SQLServer判断字符串是不是包含某字符

JavaScript笔试题(js高级代码片段)

Sql Server 判断字符串是否可以转数字

判断字段或者字符中是否包含有特殊字符

在java里怎么判断输入的东西是否数字和正整数?(请把详细的代码给我谢谢)