oracle - Oracle 10g 如何计算 boolean 表达式中的 NULL

标签 oracle null oracle10g boolean

if not (i_ReLaunch = 1 and (dt_enddate is not null))

在 Oracle 10g 中如何评估此表达式 当i_ReLaunch = null的输入值且dt_enddate的值不为null时 它正在进入循环。 根据普通 c# 中的规则,它不应该进入循环 其值如下。

If( not(假和(真)) = 如果不是(假) =if( true) 这意味着它应该进入循环

但这并没有发生

如果我在任何地方错了,有人可以告诉我吗

最佳答案

Oracle 中带有 NULL 值的 boolean 运算返回 UNKNOWN - 不是 true 或 false。所以你有这样的东西:

If( not(UNKNOWN and (true)) = if not( UNKNOWN) =if( UNKNOWN )

在这种情况下,IF 会将 UNKNOWN 视为 false。

如果i_relaunch可以为空,那么您需要使用一些NULL处理函数(NVL,NVL2,NULLIF,COALESCE,LNNVL)来确保您有正确结果。

请参阅以下文章了解更多信息:

关于oracle - Oracle 10g 如何计算 boolean 表达式中的 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2692046/

相关文章:

php - 从 jQuery .ajax() 在 PHP 中获取 JSON

java - 在 Velocity 中,如何使模板将空值、空指针和索引越界异常呈现为空白?

r - 下一页 token R Google Places API

java - 获取异常 : The Network Adapter could not establish the connection in simple jdbc program

java - 如何将 IN 参数指定为 TABLE 类型的 Oracle 数据类型?

sql - 如何在我的表上找到哪些表有外键?

sql - 强制首先运行 SQL 子查询

sql - Oracle中有没有一种方法可以使列不区分大小写?

database - 学习 Cocoa 数据库开发的推荐资源?

c# - 使用 PC 上已有的 Oracle.DataAccess.DLL,不提供