sqlserver判断字符串是否是数字

矫情吗;* 2021-11-05 11:22 547阅读 0赞

sqlserver判断字符串是否是数字

原文: sqlserver判断字符串是否是数字

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

eg:

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

但是,该函数有个缺点!

eg:

  1. SELECT
  2. ,ISNUMERIC('-') as '-' --1
  3. ,ISNUMERIC('+') as '+' --1
  4. ,ISNUMERIC('$') as '$' --1
  5. ,ISNUMERIC('.') as '.' --1
  6. ,ISNUMERIC(',') as ',' --1
  7. ,ISNUMERIC('\') as '\' --1
  8. ,ISNUMERIC('2D3') AS '2D3'--1
  9. ,ISNUMERIC('1d1') AS '1d1'--1
  10. ,ISNUMERIC('1e1') AS '1e1'--1
  11. ,ISNUMERIC('d') AS 'd' --0

当含有美元符、加减号、逗号等符号时,或者D、E的前后均出现数字时,也会返回1,这就比较头疼了。标点符号倒是好理解,为什么d,e这种情况,真是不理解微软设计的意图。

有什么好的解决办法吗?当然了,请看下面

方法:通配符。高逼格使用。

适用场景:2005及以上(2005之前的版本没试过,应该也支持)

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

posted on 2019-08-05 13:56 NET未来之路 阅读( …) 评论( …) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/11302594.html

发表评论

表情:
评论列表 (有 0 条评论,547人围观)

还没有评论,来说两句吧...

相关阅读