¿Cómo verifico si una columna está vacía o nula en MySQL?
Tengo una columna en una tabla que puede contener valores nulos o vacíos. ¿Cómo verifico si una columna está vacía o nula en las filas presentes en una tabla?
(e.g. null or '' or ' ' or ' ' and ...)
Aceptado
Esto seleccionará todas las filas donde some_col
está NULL
o ''
(cadena vacía)
SELECT * FROM table WHERE some_col IS NULL OR some_col = '';
Según lo definido por el estándar SQL-92, al comparar dos cadenas de diferentes anchos, el valor más estrecho se rellena a la derecha con espacios para que tenga el mismo ancho que el valor más ancho. Por lo tanto, todos los valores de cadena que constan enteramente de espacios (incluidos los espacios cero) se considerarán iguales, por ejemplo
'' = ' ' IS TRUE
'' = ' ' IS TRUE
' ' = ' ' IS TRUE
' ' = ' ' IS TRUE
etc
Por lo tanto, esto debería funcionar independientemente de cuántos espacios compongan el some_col
valor:
SELECT *
FROM T
WHERE some_col IS NULL
OR some_col = ' ';
o más sucintamente:
SELECT *
FROM T
WHERE NULLIF(some_col, ' ') IS NULL;