2010-07-09 10 views
34

ho una dichiarazione prescelta in cui voglio fare selezionare condizionale come questomysql IFNULL ELSE

IFNULL(field_a,field_a,feild_b) 

in modo che controlli campo un se a è nulla allora la select sarebbe campo b

è che possibile?

risposta

68

Uso COALESCE:

SELECT COALESCE(field_a, field_b) 

COALESCE è una funzione standard ANSI che restituisce il primo valore non nullo dall'elenco di colonne specificato, l'elaborazione le colonne da sinistra a destra. Quindi nell'esempio, se field_a è nullo, verrà visualizzato il valore field_b. Tuttavia, questa funzione restituirà NULL se non esiste un valore non nullo dalle colonne specificate.

E 'supportato su MySQL (che ho usato su 4.1), SQL Server (dal V2000), Oracle 9i + ...

+3

mi supporta l'utilizzo di COALESCE pure. –

+0

Una spiegazione così chiara di come funziona la funzione ... Grazie! Aggiornato il collegamento interrotto. – Andrew

34

Sì, ma è solo due parametri:

IFNULL(field_a,field_b) 

Se field_a non è nullo, verrà restituito. Altrimenti verrà restituito field_b.

Riferimento: IFNULL

28

e un altro modo per scuoiare il gatto (flessibile non solo per i confronti nulli) ...

select if(field_a is not null, field_a, field_b) from... 
+1

La migliore risposta. Permetti di fare 'Selezionare se (il nome non è nullo, CONCAT ('name is:', name), '');' – Apolo

+0

'selezionare IFNULL (colonna, 'default')' funziona anche. Vedi qui: http://sqlfiddle.com/#!9/14b752/1/0 – Arda