ORA-01722:无效数字错误求助(未执行字符串转数字操作)
ORA-01722: invalid number错误原因及解决办法
错误原因
你的SQL触发错误的核心是隐式类型转换:
- 若
ITJ或TYN字段为字符串类型,Oracle会自动将这两个字段的所有值转换为数字,来和条件中的数字(5、123等)做比较。 - 如果这两个字段里存在无法转成数字的内容(比如字母、特殊符号、空格),就会抛出ORA-01722错误。
解决办法
有两种可行处理方式:
- 将条件中的数字用单引号包裹,让比较在字符串类型下进行,避免隐式转换:
select * from SCHEMA.M001100 WHERE CSX NOT in ('ODZ','TLQ','DES') AND ITJ NOT IN ('5') AND TYN NOT IN ('123','456','789'); - 先确认
ITJ和TYN的字段类型,如果它们本应是数字类型,检查并清理字段中的非数字无效数据后,再执行原查询。
内容的提问来源于stack exchange,提问作者Mr 2017
相关产品推荐
相关产品推荐

