oracle sql表联合报错invalid number,筛出字段中的数值集合
2021/4/28 19:30:32
本文主要是介绍oracle sql表联合报错invalid number,筛出字段中的数值集合,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
在执行一段查询SQL的时候报错,系统提示此错误:
经几遍修改SQL还是报该错,核对SQL语句无误,经查看数据集,匹配id存在非数值记录
1.在查询的where里面加入条件语句,查看异常数据:
select * from 表名 where nvl2(translate(字段名,'/1234567890','/'),'CHAR','NUMBER') = 'CHAR'
2.正则表达式函数 REGEXP_SUBSTR 处理,将数据进行过滤,ok!
--条件语句: where REGEXP_SUBSTR(t1.operatorid, '[0-9]+') IS NOT NULL --示例: select t1.operatorid,t2.equ_group, max(last_login) last_login from 表 t1, (select t1.equ_group, t2.locationid from 表 t1,表 t2 where t2.equ_id = t1.id)t2 where t1.eqpid=t2.locationid and REGEXP_SUBSTR(t1.operatorid, '[0-9]+') IS NOT NULL group by t1.operatorid,t2.equ_group
3.扩展:
正则表达式函数 REGEXP_SUBSTR,有5个参数,分别是:
--example: SELECT REGEXP_SUBSTR('ABC123BCD456','[0-9]+') FROM DUAL; --返回123 SELECT REGEXP_SUBSTR('ABC123BCD456','[0-9]+',6) FROM DUAL; --返回3 SELECT REGEXP_SUBSTR('ABC123BCD456','[0-9]+',7) FROM DUAL; --返回456 SELECT REGEXP_SUBSTR('ABC123BCD456','[0-9]+',1,2) FROM DUAL; --返回456
translate函数,语法是TRANSLATE(string,from_str,to_str),其功能是返回将(所有出现的)from_str中的每个字符替换为to_str中的相应字符以后的string。
--语法: select translate('字段' , '0123456789' || '字段' , '0123456789') from 表; --example: select translate('sdgub1235sdhau' ,'0123456789'||'sdgub1235sdhau' ,'0123456789') from dual --输出: --1235
这篇关于oracle sql表联合报错invalid number,筛出字段中的数值集合的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-27Nacos多环境配置学习入门
- 2024-12-27Nacos快速入门学习入门
- 2024-12-27Nacos快速入门学习入门
- 2024-12-27Nacos配置中心学习入门指南
- 2024-12-27Nacos配置中心学习入门
- 2024-12-27Nacos做项目隔离学习入门
- 2024-12-27Nacos做项目隔离学习入门
- 2024-12-27Nacos初识学习入门:轻松掌握服务发现与配置管理
- 2024-12-27Nacos初识学习入门:轻松掌握Nacos基础操作
- 2024-12-27Nacos多环境配置学习入门