2012-03-26 9 views
10

Ho per fare questo? Quale query può essere scritta utilizzando selezionare l'istruzione in cui tutti i valori null devono essere sostituiti con 123?Sostituisci valori null in sql usando l'istruzione select?

So che possiamo farlo usando, aggiornamento tablename set fieldname = "123" dove fieldname è nullo;

ma non è possibile farlo utilizzando selezionare l'istruzione.

+0

aggiornamento tablename set nomecampo = "123" dove nomecampo è nullo; – Thompson

+0

Conosco questa funzione, ma come fare questa sostituzione del valore null usando l'istruzione select? – Thompson

risposta

24

Hai un sacco di opzioni per sostituendo valori NULL in MySQL:

CASE

select case 
    when fieldname is null then '123' 
    else fieldname end as fieldname 
from tablename 

COALESCE

select coalesce(fieldname, '123') as fieldname 
from tablename 

IFNULL

select ifnull(fieldname, '123') as fieldname 
from tablename 
+0

sì, questo è quello che stavo cercando.grazie Può anche essere scrivere una query utilizzando l'istruzione select, dove vogliamo che tutti i valori NULL siano finalmente utilizzando Order By. – Thompson

+1

Questa risposta è utile anche per altri database.Ad esempio, sia COALESCE che IFNULL sono presenti in SQLite e funzionano come previsto – epicsmile

+0

Nota: IFNULL è solo per MySql. Se si utilizza MS Access o SQL Server, allora stai cercando ISNULL, e se stai usando Oracle, allora stai cercando NVL. Fonte: https: //www.w3school s.com/sql/sql_isnull.asp – Tyler

0

Un'istruzione UPDATE è necessaria per aggiornare i dati in una tabella. Non è possibile utilizzare l'istruzione SELECT per farlo.

+1

Penso che voglia modificare l'output della query, non i dati effettivi. – Dave

+0

Ah, sembra che abbia frainteso la domanda allora :-( – Exupery

+0

ok ok Exupery Abbiamo la risposta di RedFilter – Thompson

6

C'è un'istruzione chiamata IFNULL, che prende tutti i valori di input e restituisce il primo valore non NULL.

esempio:

select IFNULL(column, 1) FROM table; 

http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html#function_ifnull

+1

Questo risponde alla domanda, ma è importante notare che IFNULL accetta solo due argomenti COLAESCE (che è una funzione MSSQL) richiede un numero arbitrario di valori di input e restituisce il primo non-null – Dave

1

penso che stai cercando per la funzione IFNULL IFNULL(field, 0) restituirà un 0 quando il campo restituisce null