数据库
首页 > 数据库> > [转]sqlserver判断字符串是否是数字

[转]sqlserver判断字符串是否是数字

作者:互联网

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

eg:

1 select ISNUMERIC('123'--结果为1

但是,该函数有个缺点!

eg:

1 2 3 4 5 6 7 8 9 10 11 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之前的版本没试过,应该也支持)

1 2 3 4 5 --返回0-则为纯数字(支持正负数,小数点)  SELECT PATINDEX('%[^0-9|.|-|+]%','2.2')--返回0    --返回0-则为纯整数 select PATINDEX('%[^0-9]%''2.2')--返回非0

  

标签:返回,数字,eg,sqlserver,是否是,1e1,ISNUMERIC,字符串,select
来源: https://www.cnblogs.com/yanglang/p/12030236.html