我使用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 "
答案 0 :(得分: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。当expression是任何列,变量或文字或这些的组合时,以下情况返回TRUE,其值为NULL:
- 表达式为空
- expression = null
- expression = @x其中@x是包含NULL的变量或参数。此异常有助于使用null默认参数编写存储过程。
- expression!= n其中n是不包含NULL的文字,表达式的计算结果为NULL。 (source)
(大写是我的个人风格偏好)
作为旁注,您还可以使用COALESCE()
函数来处理NULL值,但在您的用例中,它不会添加任何有用的内容。
参考:
答案 1 :(得分:1)
使用is null
:
cntct_rltn.dt_eff_end为空
更多信息,here
编辑:
cQ =“update var1 = null”。(可以).cQ =“update var1 is null”????? - niru dyogi
如果要更新,则必须使用赋值运算符=
。只有在评估条件时(例如您提供的示例中的条件),才能使用is null
。