条件NOT NULL情况SQL

Spe*_*cer 15 mysql sql null mysql-error-1064

我正在尝试计算一个字段,我希望它的行为不同,具体取决于其中一列是否为空.我正在使用MySQL

CASE 
  WHEN reply.replies <> NULL THEN
  24/((UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(qcr.LAST_MOD_TIME)+3600)/3600)*(ces.EXPERT_SCORE+2.5*scs.SIMILARITY)*(EXP(-reply.replies))
  ELSE 1
END as ANSWER_SCORE
Run Code Online (Sandbox Code Playgroud)

这是正确的语法吗?

Joe*_*lli 26

你需要拥有 when reply.replies IS NOT NULL

NULL是SQL中的一种特殊情况,无法与=或<>运算符进行比较.改为使用IS NULL和IS NOT NULL.

  • 当然可以使用`=`,`<`和`<>`进行比较.比较的结果是"NULL".同意三值布尔逻辑并不适合所有人,但你不能说'它不能被比较'. (2认同)

Tom*_*lak 5

case when reply.replies IS NOT NULL ...
Run Code Online (Sandbox Code Playgroud)

您不能将NULL与常规(算术)比较运算符进行比较。任何算术比较为NULL将返回NULL,甚至NULL = NULLNULL <> NULL将产生NULL。

使用ISIS NOT代替。