SQLSERVER PATINDEX 函数
Posted 我是真的大米
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQLSERVER PATINDEX 函数相关的知识,希望对你有一定的参考价值。
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 PATINDEX 函数的主要内容,如果未能解决你的问题,请参考以下文章