我正在尝试按一个枚举对查询进行排序,其中我的枚举的2个值我希望具有相同的优先级,但是我也希望在其中而不是首先将NULL混合在一起。
我正在使用一种情况,即使用OR运算符的语法在它们之间具有相同的优先级,这似乎工作得很好,除了NULL的顺序不正确,它们似乎是随机的。
CASE
WHEN company_size = 0 OR
company_size = 1 OR
company_size = NULL THEN '0'
WHEN company_size = 2 THEN '1'
WHEN company_size = 3 THEN '2'
END
请帮助
答案 0 :(得分:2)
NULL = NULL
的计算结果为NULL,而不是true。在CASE WHEN表达式中,NULL与false的结果相同。要将NULL与1和0混合在一起,您可能需要这样做:
CASE
WHEN company_size = 0 OR
company_size = 1 OR
company_size is NULL THEN '0'
WHEN company_size = 2 THEN '1'
WHEN company_size = 3 THEN '2'
END
答案 1 :(得分:1)
您可以使用order by coalesce()
select * from tableA
order by coalesce(company_size, 0)