vacios - ¿Cómo verifico si una columna está vacía o nula en mysql?
insertar un valor null en sql (15)
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 ...)
Como lo define el estándar SQL-92, cuando se comparan 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 amplio. Por lo tanto, todos los valores de cadena que constan completamente 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 conforman el valor de some_col
:
SELECT *
FROM T
WHERE some_col IS NULL
OR some_col = '' '';
o más sucintamente
SELECT *
FROM T
WHERE NULLIF(some_col, '' '') IS NULL;
Compruebe si hay nulo
$column is null
isnull($column)
Comprobar si está vacío
$column != ""
Sin embargo, siempre debe establecer NOT NULL para la columna,
La optimización de mysql puede manejar solo un nivel IS NULL
Esta declaración es mucho más limpia y más legible para mí:
select * from my_table where ISNULL(NULLIF(some_col, ''''));
Esto seleccionará todas las filas en las que some_col
es NULL
o ''''
(cadena vacía)
SELECT * FROM table WHERE some_col IS NULL OR some_col = '''';
Mientras comprobaba el valor null or Empty
de una columna en mi proyecto, noté que hay algunas preocupaciones de soporte en varias bases de datos.
Cada base de datos no es compatible con el método TRIM
.
A continuación se muestra la matriz para comprender los métodos admitidos por diferentes bases de datos.
La función TRIM en SQL se usa para eliminar un prefijo o sufijo especificado de una cadena. El patrón más común que se elimina es espacios en blanco. Esta función se llama de manera diferente en diferentes bases de datos:
- MySQL:
TRIM(), RTRIM(), LTRIM()
- Oracle:
RTRIM(), LTRIM()
- SQL Server:
RTRIM(), LTRIM()
Cómo comprobar vacío / nulo: -
A continuación se presentan dos formas diferentes de acuerdo a diferentes bases de datos:
La sintaxis de estas funciones de recorte es:
Uso de Trim para comprobar
SELECT FirstName FROM UserDetails WHERE TRIM(LastName) IS NULL
Uso de LTRIM y RTRIM para verificar
SELECT FirstName FROM UserDetails WHERE LTRIM(RTRIM(LastName)) IS NULL
Por encima de ambas formas, proporcione el mismo resultado solo con base en su soporte de base de datos. Solo devuelve el FirstName
de la tabla UserDetails
si tiene un LastName
vacío.
Espero que esto te ayude :)
Odio los campos desordenados en mis bases de datos. Si la columna puede ser una cadena en blanco o nula, prefiero arreglar esto antes de hacer la selección cada vez, como esto:
UPDATE MyTable SET MyColumn=NULL WHERE MyColumn='''';
SELECT * FROM MyTable WHERE MyColumn IS NULL
Esto mantiene los datos ordenados, siempre y cuando no necesite diferenciar específicamente entre NULL y vacío por alguna razón.
Otro método sin DÓNDE, intente esto ..
Seleccionará valores vacíos y nulos
SELECT ISNULL(NULLIF(fieldname,'''')) FROM tablename
Puede probar si una columna es nula o no es nula usando WHERE col IS NULL
o WHERE col IS NOT NULL
por ejemplo
SELECT myCol
FROM MyTable
WHERE MyCol IS NULL
En tu ejemplo tienes varias permutaciones de espacio en blanco. Puede eliminar el espacio en blanco usando TRIM
y puede usar COALESCE
para establecer un valor NULO predeterminado (COALESCE devolverá el primer valor no nulo de los valores que suppy).
p.ej
SELECT myCol
FROM MyTable
WHERE TRIM(COALESCE(MyCol, '''') = ''''
Esta consulta final devolverá filas donde MyCol
es nulo o tiene cualquier espacio en blanco.
Si puede evitarlo, es mejor no tener una función en una columna de la cláusula WHERE, ya que dificulta el uso de un índice. Si simplemente desea comprobar si una columna es nula o está vacía, es mejor que haga esto:
SELECT myCol
FROM MyTable
WHERE MyCol IS NULL OR MyCol = ''''
Ver TRIM COALESCE e IS NULL para más información.
También trabajando con valores nulos de la documentación de MySQL.
Si desea que se presenten los valores NULL en último lugar al realizar un ORDEN POR, haga lo siguiente:
SELECT * FROM my_table WHERE NULLIF(some_col, '''') IS NULL;
Tambien puedes hacer
SELECT * FROM table WHERE column_name LIKE ''''
El ser inverso
SELECT * FROM table WHERE column_name NOT LIKE ''''
Una forma más corta de escribir la condición:
WHERE some_col > ''''
Como null > ''''
produce unknown
, esto tiene el efecto de filtrar tanto las cadenas null
como las vacías.
Ya sea
SELECT IF(field1 IS NULL or field1 = '''', ''empty'', field1) as field1 from tablename
o
SELECT case when field1 IS NULL or field1 = ''''
then ''empty''
else field1
end as field1 from tablename
intente esto si el tipo de datos es cadena y la fila es nula
SELECT * FROM table WHERE column_name IS NULL OR column_name = ''''
Si el tipo de datos es int o la columna es 0, intente esto
SELECT * FROM table WHERE column_name > = 0
tratar
SELECT 0 IS NULL , '''' IS NULL , NULL IS NULL
-> 0, 0, 1
o
SELECT ISNULL('' '') , ISNULL( NULL )
-> 0 ,1
SELECT column_name FROM table_name WHERE column_name IN (NULL, '''')