[英]Conditional NOT NULL case SQL
我正在尝试计算一个字段,我希望它根据其中一列是否为空而表现出不同的行为。 我正在使用 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
这是正确的语法吗?
你需要when reply.replies IS NOT NULL
NULL是SQL中的一种特殊情况,无法与=或<>运算符进行比较。 改为使用IS NULL和IS NOT NULL。
case when reply.replies IS NOT NULL ...
您无法将NULL与常规(算术)比较运算符进行比较。 任何与NULL的算术比较都将返回NULL,即使NULL = NULL
或NULL <> NULL
也将产生NULL。
使用IS
或IS NOT
代替。
您可以使CASE语句检查为空
SELECT MAX(id+1),
IF(MAX(id+1) IS NULL, 1, MAX(id+1))
AS id
FROM `table_name`;
如果您在 SQL 语法中使用 is not null,则最好,'<>' 表示该列具有可与其他句子进行比较的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.