如果列值与给定值匹配,则返回值

时间:2014-03-03 20:54:32

标签: sql

如果发生特定值,我会尝试回退到默认值。伪代码就是这样的:

IS(GREATEST(
    IFNULL(ist.change_date, ''), 
    IFNULL(a.change_date, ''), 
    IFNULL(co.commented_on, '')
  ), '', NULL) last_updated_tmp

它的结构如下

IS(EXPRESSION, VALUE_TO_HANDLE, DEFAULT_VALUE)

如果EXPRESSION生成VALUE_TO_HANDLE,则应返回DEFAULT_VALUE,而不是EXPRESSION的结果。

我不会做像

这样的事情
IF(GREATEST(IFNULL(ist.change_date, ''), IFNULL(a.change_date, ''), IFNULL(co.commented_on, '')) = '', NULL, GREATEST(IFNULL(ist.change_date, ''), IFNULL(a.change_date, ''), IFNULL(co.commented_on, '')))

因为感觉很脏。

1 个答案:

答案 0 :(得分:0)

使用CASE

SELECT
    CASE 
        WHEN Expression = Value THEN Default
        ELSE Expression
    END
FROM mytable