sqlserver判断字符串是否是数字
  eCO46Rq6uUzg 2023年11月02日 32 0
sql

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

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

上一篇: Docker Compose 容器编排 下一篇: 防火墙
  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  c4lKJfwN1Ht0   2023年11月13日   72   0   0 PostgreSQLvimsql
  eHipUjOuzYYH   2023年12月10日   31   0   0 mysqlsqlUser
  wwLZeziuqjLR   2023年11月13日   25   0   0 mysqlsqlbash
  FovjwikGFf5m   2023年11月13日   27   0   0 数据库sql
  hHWnOnebRjW2   2023年11月27日   27   0   0 PostgreSQLsqlbash
  pfl0iGEgXbv6   2023年11月13日   30   0   0 mysqlsql
eCO46Rq6uUzg