前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >sqlserver判断字符串是否是数字

sqlserver判断字符串是否是数字

作者头像
Twcat_tree
发布2023-10-16 19:05:54
1500
发布2023-10-16 19:05:54
举报
文章被收录于专栏:二猫の家二猫の家

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

eg:

select ISNUMERIC(‘123’) --结果为1 但是,该函数有个缺点!

eg:

SELECT

,ISNUMERIC(‘-’) as ‘-’ --1

,ISNUMERIC(‘+’) as ‘+’ --1

,ISNUMERIC(‘′ ) a s ′ ') as '

)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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-09-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档