sqlserver判断字符串是否是数字
2016-06-28 22:20
288 查看
sql2005有个函数ISNUMERIC(expression)函数:当expression为数字时,返回1,否则返回0。这只是一个菜鸟级的解决办法,大多数情况比较奏效。
eg:
但是,该函数有个缺点!
eg:
当含有美元符、加减号、逗号等符号时,或者D、E的前后均出现数字时,也会返回1,这就比较头疼了。标点符号倒是好理解,为什么d,e这种情况,真是不理解微软设计的意图。
有什么好的解决办法吗?当然了,请看下面
方法:通配符。高逼格使用。
适用场景:2005及以上(2005之前的版本没试过,应该也支持)
eg:
select ISNUMERIC('123') --结果为1
但是,该函数有个缺点!
eg:
SELECT ,ISNUMERIC('-') as '-' -- ,ISNUMERIC('+') as '+' -- ,ISNUMERIC('$') as '$' -- ,ISNUMERIC('.') as '.' -- ,ISNUMERIC(',') as ',' -- ,ISNUMERIC('\') as '\' -- ,ISNUMERIC('2D3') AS '2D3'-- ,ISNUMERIC('1d1') AS '1d1'-- ,ISNUMERIC('1e1') AS '1e1'-- ,ISNUMERIC('d') AS 'd' --
当含有美元符、加减号、逗号等符号时,或者D、E的前后均出现数字时,也会返回1,这就比较头疼了。标点符号倒是好理解,为什么d,e这种情况,真是不理解微软设计的意图。
有什么好的解决办法吗?当然了,请看下面
方法:通配符。高逼格使用。
适用场景:2005及以上(2005之前的版本没试过,应该也支持)
--返回0-则为纯数字(支持正负数,小数点) SELECT PATINDEX('%[^0-9|.|-|+]%','2.2')--返回0 --返回0-则为纯整数 select PATINDEX('%[^0-9]%', '2.2')--返回非0
相关文章推荐
- 【redis】常见JedisConnectionException异常分析
- pl/sql array类型
- SQL Server 数据库中SQL优化的一次记录
- mysql (已解决)Access denied for user 'root'@'localhost' (using password: NO)
- mysqldump导出数据时忽略时区
- 如何远程连接mysql数据库
- pl/sql 记录(Record)类型
- 灵活运用 SQL SERVER FOR XML PATH
- 数据库时区
- Sql 之 case函数
- GAP LOCK(间隙锁)
- MySql-InnoDB存储引擎的锁和事务
- redis缓存mysql
- 数据库 PLSQL 创建表格
- session入mysql
- pl/sql变量类型
- 实习日记7_2016.06.28
- 在Ubuntu14.04上安装和配置Mongodb
- pl/sql 标识符与变量名
- 浅谈数据库的水平拆分