博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sqlserver判断字符串是否是数字
阅读量:6922 次
发布时间:2019-06-27

本文共 713 字,大约阅读时间需要 2 分钟。

原文:

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

转载地址:http://dvkjl.baihongyu.com/

你可能感兴趣的文章
无线技巧:学会设置无线上网猫以及网卡
查看>>
DecimalFormat 用法(数字格式化)
查看>>
android 设置seekBar 和Progress背景色
查看>>
JSP 9个内置对象详解
查看>>
6.MyBatis实现一对一查询
查看>>
微软私有云系列-----使用体验
查看>>
后门发现(yuange)
查看>>
linux下dns视图配置
查看>>
MIUI:10个亮点及5处不足
查看>>
linux系统启动流程
查看>>
ceph集群jewel版本部署osd激活权限报错-故障排查
查看>>
linux grep egrep fgrep bash条件判断 bash测试 if 条件判断
查看>>
gitHub使用入门和github for windows的安装教程
查看>>
利用锚点制作简单索引效果
查看>>
重置目录服务还原模式管理员密码
查看>>
Linux rm命令
查看>>
Java的封装特性
查看>>
java分享第二天(变量及命名规范)
查看>>
第二天:安装VMware和linux系统(1)
查看>>
第 三 十 天:Linux 系 统 优 化 扩 展
查看>>