Categorías
MySQL

Buscar o listar campos vacíos en MySQL

A raíz de unas búsquedas en una base de datos para actualizar datos. Vi la necesidad de hacer unas búsquedas en la que los campos están vacíos. Respecto a esto, se ha escrito mucho en Internet, y es algo básico y sencillo, pero no está de más hacer un recordatorio.

Existen diferencias importantes entre estas dos órdenes:

SELECT * FROM clientes WHERE empresa = ''</code> <code>SELECT * FROM clientes WHERE empresa is NULL<span data-mce-type="bookmark" style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" class="mce_SELRES_start"></span></pre>
<p>Al igual que existe diferencia entre estas dos órdenes:</p>
<pre><code>SELECT * FROM clientes WHERE empresa != ''</code> <code></code><code>SELECT * FROM clientes WHERE empresa IS NOT NULL</code>

No es lo mismo que un campo esté vacío o tenga el valor NULL.

Ejemplos:

Tablas para el ejemplo:

mysql> SELECT * FROM clientes; +--------+-------------+ | clientes | empresa | +--------+-------------+ | uno | unoempresa | | dos | | | tres | NULL | +--------+-------------+

Muestra los valores vacíos:

mysql> SELECT * FROM clientes WHERE empresa= ''; +--------+-------------+ | clientes | empresa | +--------+-------------+ | dos | | +--------+-------------+

Ahora con los valores NULL:

mysql> SELECT * FROM clientes WHERE empresa IS NULL;
 +--------+-------------+
 | clientes | empresa |
 +--------+-------------+
 | tres | NULL |
 +--------+-------------+

Cómo encontrar tanto los valores vacíos como los valores NULL:

mysql> SELECT * FROM clientes WHERE empresa= '' OR empresa IS NULL; +--------+-------------+ | clientes | empresa | +--------+-------------+ | dos | | | tres | NULL | +--------+-------------+

Hay que recordar que NULL es un unoempresa, o sea, un valor, así que al introducir la siguiente orden, obtendremos las filas que no estén vacías, tanto las que tiene unoempresa, como las que tienen valor NULL:

mysql> SELECT * FROM clientes WHERE empresa= !''; +--------+-------------+ | clientes | empresa | +--------+-------------+ | uno | unoempresa | | tres | NULL | +--------+-------------+