valores vacios vacio traer seleccionar saber poner nulos not hacer esta diferente convertir contar campos campo mysql null

vacios - seleccionar null mysql



MySQL: seleccionando filas donde una columna es nula (8)

Tengo un problema en el que cuando intento seleccionar las filas que tienen un valor NULL para una columna determinada, devuelve un conjunto vacío. Sin embargo, cuando miro la tabla en phpMyAdmin, dice nulo para la mayoría de las filas.

Mi consulta se ve algo como esto:

SELECT pid FROM planets WHERE userid = NULL

Set vacío cada vez.

Se dice que muchos lugares se aseguran de que no se almacene como "NULL" o "null" en lugar de un valor real, y uno dijo que intenta buscar solo un espacio ( userid = '' '' ), pero ninguno de estos ha funcionado. Hubo una sugerencia para no usar MyISAM y usar innoDB porque MyISAM tiene problemas para almacenar null. Cambié la tabla a innoDB pero ahora siento que el problema puede ser que todavía no es nulo debido a la forma en que podría convertirlo. Me gustaría hacer esto sin tener que recrear la tabla como innoDB o cualquier otra cosa, pero si tengo que hacerlo, ciertamente puedo intentarlo.


Como todas las respuestas son dadas quiero agregar un poco más. Yo también había enfrentado el mismo problema.

¿Por qué falló tu consulta? Tienes,

SELECT pid FROM planets WHERE userid = NULL;

Esto no le dará el resultado esperado, porque desde mysql doc

En SQL, el valor NULL nunca es verdadero en comparación con cualquier otro valor, incluso NULL. Una expresión que contiene NULL siempre produce un valor NULL a menos que se indique lo contrario en la documentación para los operadores y las funciones involucradas en la expresión.

Énfasis mío.

Para buscar valores de columna que sean NULL , no puede usar una prueba expr = NULL . La siguiente declaración no devuelve filas, porque expr = NULL nunca es verdadero para ninguna expresión

Solución

SELECT pid FROM planets WHERE userid IS NULL;

Para probar NULL , use los operadores IS NULL e IS NOT NULL .


Información de http://w3schools.com/sql/sql_null_values.asp :

1) Los valores NULL representan datos desconocidos que faltan.

2) De forma predeterminada, una columna de tabla puede contener valores NULL.

3) Los valores NULL se tratan de forma diferente a otros valores

4) No es posible comparar NULL y 0; no son equivalentes.

5) No es posible probar los valores NULL con operadores de comparación, como =, <o <>.

6) Tendremos que usar los operadores IS NULL y IS NOT NOT NULL en su lugar

Así que en caso de su problema:

SELECT pid FROM planets WHERE userid IS NULL




Tenía el mismo problema donde la consulta:

SELECT * FROM ''column'' WHERE ''column'' IS NULL;

No devolvió valores. Parece ser un problema con MyISAM y la misma consulta en los datos en InnoDB arrojó los resultados esperados.

Fue con:

SELECT * FROM ''column'' WHERE ''column'' = '' '';

Devuelto todos los resultados esperados.


Tuve el mismo problema al convertir bases de datos de Access a MySQL (usando vb.net para comunicarme con la base de datos).

Necesitaba evaluar si un campo (campo tipo varchar (1)) era nulo.

Esta declaración funcionó para mi escenario:

SELECT * FROM [table name] WHERE [field name] = ''''


SELECT pid FROM planets WHERE userid IS NULL


SELECT pid FROM planets WHERE userid is null;