Oracle 判断字符串是否能转成数字。
而Oracle没有这个函数,所以在sql语句使用to_number函数时有时候会因为数据问题导致系统出错。
解决方案有几个,
一, 新建1个自定义函数, 利用to_number, 能转换成to_number的就返回真, 转换出错的就返回假。
CREATE OR REPLACE FUNCTION isnumeric (str IN VARCHAR2)
RETURN NUMBER
IS
v_str FLOAT;
BEGIN
IF str IS NULL
THEN
RETURN 0;
ELSE
BEGIN
SELECT TO_NUMBER (str)
INTO v_str
FROM DUAL;
EXCEPTION
WHEN INVALID_NUMBER
THEN
RETURN 0;
END;
RETURN 1;
END IF;
END isnumeric;
二,这种方法不用新增自定义系统函数,利用translate函数,只需要加在where条件里。
例如下面这个sql语句
select t.instance
from sys.v$thread t,
sys.v$parameter v
where v.name = 'thread'
and (v.value = '0' or
t.thread# = to_number(v.value))
因为高亮字句的原因,v.value中存在不能转成数字的字符数据,所以是会报错的。
而加入下面这些判断后,
select t.instance from sys.v$thread t, sys.v$parameter v where v.name = 'thread' and translate(v.value,'a1234567890.-','a') is null --必须由数字和"."和"-"组成 and translate(v.value,'1.-','1') is not null --去掉"."和"-"后至少1个字符,也就是至少有1个数字啦 and length(v.value) - length(replace(v.value,'.','')) < 2 --"."的个数必须少于2 and (instr(v.value,'-',0)= 0 or ( --没有"-" --或者只有1个"-"字符,而且用"-"开头 (length(v.value) - length(replace(v.value,'-','')) = 1) and substr(v.value,1,1) ='-')) and (v.value = '0' or t.thread# = to_number(v.value))
就不会报错了,因为在执行to_number之前已经把不符合要求的数据筛掉。
执行了上面的条件后, 其实还有类似“-.6",".1" 这样的数据保留,其实无所谓,因为to_number是可以无错执行的。
关于translate函数可以参考:http://nvd11.blog.163.com/blog/static/2000183122012112605432545/
Oracle 判断字符串是否能转成数字。相关推荐
- python判断字母数字_Python判断字符串是否为字母或者数字(浮点数)的多种方法
str为字符串s为字符串 str.isalnum() 所有字符都是数字或者字母 str.isalpha() 所有字符都是字母 str.isdigit() 所有字符都是数字 str.isspace() ...
- c语言c判断字符数字,c语言问题求教 利用函数判断字符串中是否全为数字
c语言问题求教 利用函数判断字符串中是否全为数字 答案:4 信息版本:手机版 解决时间 2018-12-22 19:42 已解决 2018-12-22 08:52 c语言问题求教 利用函数判断字符串 ...
- 判断字符串是否是字母开头数字结尾,拆分字符串中的字母和数字。
1. 拆分字符串中的字母和数字 splitString(str) {let letter = str.match(/^[a-z|A-Z]+/g)[0];let number = str.match(/ ...
- pyhton如何判断字符串中是否只含有数字——isdigit函数的用法及实例
目录 1.isdigit函数的语法及用法 (1)语法:isdigit() (2)用法:用于判断字符串中是否只含有数字.数字只能为0和正数,不能为负数. 2.实例 (1)简单的用法 (2)与if条件函数 ...
- Python判断字符串是否为字母或者数字
str_1 = "123" str_2 = "Abc" str_3 = "123Abc" 用isdigit函数判断是否数字 print(st ...
- python面试题(5)--- 检测 字符串 是否可以转换成 数字
1.检测字符串是否由数字组成否为数字 代码演示: s1 = '1234564' print('1234564是数字:',s1.isdigit()) #检测字符串是否由数字组成print(int(s1) ...
- python3 判断字符串是否包含中英文和数字
import redef check_contain_chinese(check_str):"""判断字符串中是否含有中文字符"""for ...
- js判断字符串的括号是否成对出现
给定一个字符串里面可能包含"()"."{}"."[]"三种括号,请使用JavaScript实现一个函数,检查字符串的括号是否成对出现. 思路 ...
- php判断小数点的长度_PHP 判断字符串是否为整数、数字、不含小数点
PHP 用正则表达式判断字符串是否为整数,若字符串未定义.未赋值.或者带有小数点验证均会提示不是整数 $Number="1"; if(preg_match("/^-?\d ...
最新文章
- 每一个科学家的内心都住着一位哲学家(节选)
- 微信小程序lottiejs动画事例代码
- java cloneable 用途_java中cloneable的使用
- 防火墙(11)——防止爬虫过多访问(ping)我们的服务器
- [BZOJ1260][CQOI2007]涂色paint 区间dp
- sun服务器dt消息不能被启动,Sun ONE Application Server 错误
- 电脑显示屏亮度怎么调_金合光电丨深圳led显示屏厂家为您诠释行业专业术语
- 在排序数组中查找数字
- 关于idea maven ojdbc6.jar 报错问题
- DDE实现动态数据交换
- html怎么把字做成动画效果,用纯CSS实现文字的动态效果
- 整流十五—网侧低频电流谐波抑制方法及其稳定性分析
- AtCoder Beginner Contest 168 C~D题解
- 零代码变更,巧用 Reloader 快速实现 Kubernetes 的 Configmap 和 Secret 热更新
- IDEA java类文件左下角出现橙红色的圆形小标识
- 简易公交车查询系统c语言,公交线路免费api接口代码
- 浙大PTA-Python题库 编程题第一章(1-1~1-3)题解
- 【BYM】Android 实现相机快门动画
- Hbase(二)hbase建表
- 7个优秀「开放式」前端面试题分享!附答案