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-11-01UniApp 中组件的生命周期是多少-icode9专业技术文章分享
- 2024-11-01如何使用Svg Sprite Icon简化网页图标管理
- 2024-10-31Excel数据导出课程:新手从入门到精通的实用教程
- 2024-10-31Excel数据导入课程:新手入门指南
- 2024-10-31RBAC的权限课程:新手入门教程
- 2024-10-31Svg Sprite Icon课程:新手入门必备指南
- 2024-10-31怎么配置 L2TP 允许多用户连接-icode9专业技术文章分享
- 2024-10-31怎么在FreeBSD上 安装 OpenResty-icode9专业技术文章分享
- 2024-10-31运行 modprobe l2tp_ppp 时收到“module not found”消息提醒是什么-icode9专业技术文章分享
- 2024-10-31FreeBSD的下载命令有哪些-icode9专业技术文章分享