2017-10-08 32 views
0

有沒有一種方法來簡化以下?第一個非假值

CASE WHEN 
    (a.is_future_release IS TRUE OR aa.is_future_release IS TRUE) THEN TRUE 
    ELSE FALSE 
END 

在Python中我會做:

a.is_future_release or aa.is_future_release or False 

可這在MySQL/SQL被簡化?

+0

的[我該怎麼辦布爾邏輯上的兩列在MySQL?(https://stackoverflow.com/questions/248683/how-can-i-do-boolean-logic-on-two-columns可能的複製-in-mysql的) –

+0

@ DanielA.White但如果我不'a.is_future_release | aa.is_future_release'如果兩者計算結果爲假返回'NULL'不爲0 – David542

回答

1

這難道不是你想要做什麼?

(a.is_future_release OR aa.is_future_release) 

在MySQL中,布爾值被視爲整數,值爲「1」爲真,「0」爲false。

這和你的原始查詢唯一的區別是,如果兩個值都是NULL,這可能會返回NULL

+2

你可以包裝在'COALESCE整個事情( ,0)',以避免返回'null'值。 – cars10m

0

IF說法是有點清潔:

IF(a.is_future_release IS TRUE OR aa.is_future_release IS TRUE, TRUE, FALSE) 

或者使用布爾運算符/速記:

IF(a.is_future_release|aa.is_future_release, TRUE, FALSE)