isNull在sybase where子句中

时间:2013-07-05 15:39:55

标签: vb6 sybase

我使用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 "

2 个答案:

答案 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