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 | +--------+-------------+