我需要编写一个sql查询,如下所示: 选择名称为NAME, (某事)作为表中的customer_id;
对于customer_id,表有3列,具体取决于客户的类型。所以我连续检查哪个id列非空,我把它作为customer_id 因此上述查询中的某些内容如下:
(CASE
WHEN ID1 != null THEN ID1
WHEN ID2 != null THEN ID2
WHEN ID3 != null THEN ID3
ELSE null
END) as customer_id.
但是查询始终为客户ID返回null。我在这里遗漏了什么或者有更好的方法来实现这个目标吗?
答案 0 :(得分:0)
您需要使用not null
而不是!= NULL
:
(CASE
WHEN ID1 is not null THEN ID1
WHEN ID2 is not null THEN ID2
WHEN ID3 is not null THEN ID3
ELSE null
END) as customer_id
与null
的任何比较(只有少数例外)都会返回NULL
。并且NULL
布尔值被视为false。
更好的方法是使用coalesce()
:
coalesce(ID1, ID2, ID3) as customer_id