2012-03-26 22 views
10

¿Ho para hacer esto? ¿Qué consulta se puede escribir utilizando seleccione la declaración donde todos los valores nulos se deben reemplazar por 123?¿Reemplaza los valores nulos en sql usando la instrucción select?

Sé que podemos hacer esto y usando, update tablename set fieldname = "123" donde fieldname es nulo;

pero no puede hacerlo usando seleccione la declaración.

+0

de actualización del conjunto nombredetabla nombre de campo = "123", donde nombre de campo es nulo; – Thompson

+0

Conozco esta función, pero ¿cómo hacer esto para reemplazar el valor nulo usando la instrucción select? – Thompson

Respuesta

24

Tienes un montón de opciones para sustituyendo valores NULL en 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í, esto es lo que estaba buscando. Gracias. También se puede escribir una consulta utilizando la instrucción select, donde queremos que todos los valores NULL sean al fin usando Order By. – Thompson

+1

Esta respuesta también es útil para otras bases de datos. Por ejemplo, COALESCE e IFNULL están presentes en SQLite y funcionan como se espera. – epicsmile

+0

Nota: IFNULL es solo para MySql. Si usa MS Access o SQL Server, entonces está buscando ISNULL, y si está usando Oracle, entonces está buscando NVL. Fuente: https: //www.w3school s.com/sql/sql_isnull.asp – Tyler

0

Se necesita una instrucción UPDATE para actualizar los datos en una tabla. No puede usar la instrucción SELECT para hacerlo.

+1

Creo que quiere modificar el resultado de la consulta, no los datos reales. – Dave

+0

Ah, parece que entendí mal la pregunta entonces :-( – Exupery

+0

está bien Exupery. Tenemos la respuesta de RedFilter – Thompson

6

Hay una instrucción llamada IFNULL, que toma todos los valores de entrada y devuelve el primer valor no NULL.

ejemplo:

select IFNULL(column, 1) FROM table; 

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

+1

Esto responde la pregunta, pero es importante notar que IFNULL solo toma dos argumentos. COLAESCE (que es una característica MSSQL) toma un número arbitrario de valores de entrada y devuelve el primer valor no nulo. – Dave

1

creo que usted está buscando para la función IFNULL IFNULL(field, 0) devolverá un 0 cuando el campo devuelve un valor nulo

Cuestiones relacionadas