sql查询案例时的例子

时间:2014-04-16 14:06:18

标签: mysql sql jpa case

我需要编写一个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。我在这里遗漏了什么或者有更好的方法来实现这个目标吗?

1 个答案:

答案 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