Saltar al contenido

MySQL SELECT solo no valores nulos

Solución:

Deberías usar IS NOT NULL. (Los operadores de comparación = y <> ambos dan UNKNOWN con NULL a cada lado de la expresión.)

SELECT * 
FROM table 
WHERE YourColumn IS NOT NULL;

Solo para completar, mencionaré que en MySQL también puede negar el operador de igualdad de seguridad nula, pero esto no es SQL estándar.

SELECT *
FROM table 
WHERE NOT (YourColumn <=> NULL);

Editado para reflejar comentarios. Parece que su mesa puede no estar en su primera forma normal, en cuyo caso cambiar la estructura puede facilitar su tarea. Sin embargo, hay un par de otras formas de hacerlo …

SELECT val1 AS val
FROM  your_table
WHERE val1 IS NOT NULL
UNION ALL
SELECT val2 
FROM  your_table
WHERE val2 IS NOT NULL
/*And so on for all your columns*/

La desventaja de lo anterior es que escanea la tabla varias veces una vez para cada columna. Eso posiblemente se puede evitar con lo siguiente, pero no lo he probado en MySQL.

SELECT CASE idx
         WHEN 1 THEN val1
         WHEN 2 THEN val2
       END AS val
FROM   your_table
        /*CROSS JOIN*/
       JOIN (SELECT 1 AS idx
                   UNION ALL
                   SELECT 2) t
HAVING val IS NOT NULL  /*Can reference alias in Having in MySQL*/

Puede filtrar las filas que contienen un valor NULO en una columna específica:

SELECT col1, col2, ..., coln
FROM yourtable
WHERE somecolumn IS NOT NULL

Si desea filtrar las filas que contienen un nulo en cualquier columna, intente esto:

SELECT col1, col2, ..., coln
FROM yourtable
WHERE col1 IS NOT NULL
AND col2 IS NOT NULL
-- ...
AND coln IS NOT NULL

Actualización: Basado en sus comentarios, ¿quizás quiera esto?

SELECT * FROM
(
    SELECT col1 AS col FROM yourtable
    UNION
    SELECT col2 AS col FROM yourtable
    UNION
    -- ...
    UNION
    SELECT coln AS col FROM yourtable
) T1
WHERE col IS NOT NULL

Y estoy de acuerdo con Martin en que si necesita hacer esto, probablemente debería cambiar el diseño de su base de datos.

Select * from your_table 
WHERE col1 and col2 and col3 and col4 and col5 IS NOT NULL;

La única desventaja de este enfoque es que solo puede comparar 5 columnas, después de eso el resultado siempre será falso, por lo que comparo solo los campos que pueden ser NULL.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *