0

我使用 vb6 前端和 sybase 作为后端。我可以在 where 子句中使用 IsNull 还是必须使用 = NULL

SQLStr = "select distinct thrd_pty.id_thrd_pty, thrd_pty.name_thrd_pty, thrd_pty.nbr_tax_idtn " _
           & "from thrd_pty, cntct_rltn, cntct " _
           & "where cntct.id_cntct = '" & cntct(ColNum, CurThrdPty) & "' and cntct_rltn.id_super = cntct.id_cntct and cntct_rltn.name_super = 'cntct' and thrd_pty.id_thrd_pty = cntct_rltn.id_thrd_pty and cntct_rltn.dt_eff_end IsNull "
4

2 回答 2

1

Sybase 中的常用语法是AND cntct_rltn.dt_eff_end IS NULL(这对于您的示例来说非常好)或者ISNULL(cntct_rltn.dt_eff_end, 0)对于更复杂的东西,您想用定义的默认值替换 null。但是您可以在 ASE 15 中执行以下任何操作:

Adaptive Server 以不同的方式处理空值,具体取决于您使用的运算符和您要比较的值的类型。通常,比较空值的结果是 UNKNOWN,因为无法确定 NULL 是否等于(或不等于)给定值或另一个 NULL。当表达式是任何列、变量或文字或它们的组合时,以下情况返回 TRUE,其计算结果为 NULL:

  • 表达式为空
  • 表达式 = 空
  • expression = @x 其中@x 是包含NULL 的变量或参数。此异常有助于编写具有空默认参数的存储过程。
  • expression != n 其中 n 是不包含 NULL 的文字,并且 expression 的计算结果为 NULL。(来源

(大写是我的个人风格偏好)

作为旁注,您还可以使用COALESCE()函数来处理 NULL 值,但在您的用例中它不会添加任何有用的东西。

参考:

于 2013-07-05T15:41:02.577 回答
1

使用is null

cntct_rltn.dt_eff_end 为空

更多信息,在这里

编辑:

cQ = "update var1 = null ".(可以) .cQ = "update var1 is null" ????? ——尼鲁道吉

如果要更新,则必须使用赋值运算符=。您is null只能在评估条件时使用(例如您提供的示例中的条件)。

于 2013-07-05T15:41:11.240 回答