跳到主要内容
内容阅读

在知识库中专注阅读,并随时返回相关工具与课程

ORA-01722常见语法

无效的数字

Invalid number

错误描述

尝试将字符串转换为数字失败,因为字符串不表示有效数字。

可能原因

  • 将包含非数字数据的 VARCHAR2 列与 NUMBER 比较
  • 算术运算中非数字字符串的隐式转换
  • 数据质量问题:预期为数字的列中包含非数字值

解决方案

  1. 1查找非数字值:SELECT col FROM t WHERE NOT REGEXP_LIKE(col, '^-?[0-9]+(\\\\.[0-9]+)?$');
  2. 2使用 TO_NUMBER 配合异常处理或 DEFAULT ON CONVERSION ERROR(12c+)
  3. 3在源头修复数据质量问题

诊断命令

SELECT col FROM table_name WHERE NOT REGEXP_LIKE(col, '^[0-9.]+$') AND col IS NOT NULL FETCH FIRST 20 ROWS ONLY;
SELECT data_type FROM dba_tab_columns WHERE table_name = 'TABLE_NAME' AND column_name = 'COL_NAME';
#syntax#invalid-number#conversion#data-type

同类错误码(语法)

想系统掌握这个领域?

「语法」在课程 Day 1-10 中有 10 篇完整实战教程

完整操作步骤真实截图踩坑总结
免费试读查看完整课程¥128/月起 · 解锁全部 2738+ 篇
ORA-01722: 无效的数字 - 原因与解决方案 | DBA 学习之路