当前位置: 首页 > 知识库问答 >
问题:

Oracle评估条件不正确

萧繁
2023-03-14

我在查询两个Oracle数据库时遇到问题。

查询是:

SELECT trunc(null)
FROM dual 
WHERE (null is null 
       or SYSDATE >= TRUNC(null))

(NULL实际上是一个参数,传递给查询,查询可能为空,所以我缩短了查询)。

在生产数据库上,它工作正常,响应为NULL。

在dev DB上,我发现了一个错误,即TRUNC不能应用于NUMBER,需要DATE(ORA-00932)。

显然,生产数据库跳过了OR之后条件中的所有内容,开发人员html" target="_blank">执行OR之后的部分。

我确实知道通过将CAST(MY_PARAM日期)添加到每个查询来解决问题的解决方案,但它并不真正适合我——需要更改的代码太多。

问题是:在DB中是否有一些设置我错过了,它阻止条件扫描后,它已经是真的,还是依赖于DB版本?

我的生产数据库是:

  • Oracle Database 11g企业版发布11.2.0.4.0-64位生产
  • PL/SQL发布11.2.0.4.0-生产
  • 核心11.2.0.4.0生产
  • 64位Windows的TNS:版本11.2.0.4.0-生产
  • NLSRTL版本11.2.0.4.0-生产

我的开发数据库是:

  • Oracle Database 11g Enterprise Edition 11.2.0.1.0版-64位生产版

共有1个答案

孔安福
2023-03-14
SELECT CASE (PARAM IS NULL) THEN NULL ELSE TRUNC(PARAM) END
FROM TABLE
 类似资料:
  • Q.while循环条件是作为一个整体进行计算,还是在决定是否进入循环之前一次计算一个条件?

  • 问题内容: : 1 < 2 < 3 true : 3 > 2 > 1 false … … : 3 > 2 && 2 > 1 true 也许我真的在考虑问题,但是我认为它们都会评估为真。为什么不呢? 问题答案: 因为评估为小于, 但评估为不大于

  • 问题内容: 我必须从D / B检索一组列值并将其作为条件进行检查。 例如,我将有像字符串,在d / B柱。(值是一直比较的值)。我将在代码中声明一个变量值,我应该评估这种情况。 我怎样才能做到这一点??任何帮助都受到赞赏。谢谢。 问题答案: 这是使用标准(Java 1.6+)脚本库的示例:

  • 问题内容: 例如,如果我有以下语句: 如果foo1为true,python将检查foo2的条件吗? 问题答案: 是的,Python懒惰地评估布尔条件。 该文件说, 表达式x和y首先计算x;如果x为假,则返回其值;否则,将评估y并返回结果值。 表达式x或y首先计算x; 如果x为true,则返回其值;否则,将评估y并返回结果值。

  • 我想达到的,大致可以概括为一个简单的或者有条件的。 虽然使用Fluent验证支持其他属性上的条件属性验证(When/Unless ),但似乎没有一种方法支持同一属性上的条件规则。还是我错过了什么? 本质上我想实现: 唯一的替代方法是将规则组合在一个自定义规则中? 然而,这紧密地耦合了规则逻辑,实际上它们是完全独立的条件,我可能想在其他对象/字段上使用。 有人建议在 FluentValidation

  • 我有一个类似这样的问题:在返回函数的变量之前,我如何等待一个promise完成? 我有一个函数来执行一些表单验证。作为其中的一部分,它有时会打开一个模式,用户必须在返回值之前关闭该模式,如下所示: 注意,直到模式关闭,它才。 但是,我有一个基于函数计算的条件 这样做的问题是,如果将参数传递给,而不需要等待模式,那么我将得到一个未定义的promise。 TypeError:无法读取未定义的属性“th