2014-09-19 55 views
6

是否需要在CASE表達式中包含ELSE子句?在case表達式中是否需要else子句?

例如,如果我想拉動物是貓而不是其他的名字,我可以用這個SELECT聲明:

SELECT DISTINCT(CASE WHEN animal_type = 'cat' THEN animal_name END) AS cat_names 

我知道我可以只把animal_type = 'cat'WHERE條款,然後

SELECT DISTINCT cat_names, 

但我想知道答案。

+1

'CASE'是*表達式*,而不是*語句*。值得注意的是,因爲人們經常把它誤認爲某種形式的流程控制語句,而不是一個計算價值的表達式。 – 2014-09-19 14:49:42

+0

@Damien_The_Unbeliever該術語可能起源於ORACLE,其中CASE * *是一個聲明:https://docs.oracle.com/cd/B19306_01/appdev.102/b14261/case_statement.htm – TylerH 2017-09-28 19:26:52

回答

10

您不需要需要else條款。如果沒有指定,case將返回null。換句話說,它好像有一個else null子句。

相關問題