1
3
假设您知道给定的ID范围将始终导致包含数字数据的字段1,您可以这样做:
|
2
5
这是不好的做法。数字数据应保存在数字列中。原因很简单:如果不强制使用强数据类型,可能会发现varchar2列中有非数字数据。如果发生这种情况,那么像这样的过滤器
会失败
我不能肯定地说这就是您的场景中正在发生的事情,因为我不明白为什么ID过滤器中明显不重要的更改会改变查询的成功。查看查询的不同版本的执行计划将具有指导意义。但我认为这更可能是你的数据问题,而不是SGA中的一个bug。 |
3
1
建议执行以下操作以确定是否有包含非数字数据的记录。正如其他人所说,执行计划和评估顺序的变化可以解释为什么错误不总是出现。 (假设sqlplus是客户机)
对于原始问题,另一种解决方法是重写查询以避免隐式类型转换,例如。
|
4
0
考虑编写一个is_number pl/sql函数:
|
P Prad · 在表中找不到给定记录时,如何处理游标中的异常 6 年前 |
user8512043 · 日期差异和ORA-00937-非单个组功能 7 年前 |
Phillip · oracle:在合并列上分组 7 年前 |
Lizzie · 如何使用平均值进行分组? 7 年前 |
Andrea Zed · 提取过去30天的记录 7 年前 |