[转]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