Operadores de comparación

Categories:

En la publicación de tareas generales mencioné que después de WHERE – ya sea en consulta, actualización o eliminación de registros – se escribe una expresión.

Por el momento, la expresión va a estar representada, como una comparación.
Vamos a comparar el valor almacenado en una columna con un valor arbitrario.
Para poder especificar en MySQL la comparación tiene que tener la siguiente forma:
columna operador valor

Si el valor que vamos a comparar es texto, éste necesita ir entre comillas – simples o dobles -.
Si el valor a comparar es numérico, no es necesario el uso de las comillas.

Operador

Descripción

Ejemplo

=

Selecciona un valor igual al indicado.

-- El valor almacenado en id tiene que ser igual a 10
SELECT * FROM usuarios WHERE id = 10;
<>, !=

Selecciona un valor distinto al indicado.

-- El valor almacenado en la columna rol
--  tiene que ser diferente 
-- a la  palabra "administrador"
SELECT * FROM usuarios WHERE rol <> "administrador";
<

Selecciona un valor menor que el indicado (no lo incluye).

-- Selecciona los alumnos que tienen 
-- hasta 5 (no incluye el 6)
SELECT * FROM alumnos WHERE promedio < 6;
<=

Selecciona un valor menor o igual que el indicado (lo incluye).

-- Selecciona los alumnos que tienen 5
-- o menos en su promedio
SELECT * FROM alumnos WHERE promedio  <= 5;
>

Selecciona un valor mayor al indicado (no lo incluye).

-- Selecciona los alumnos que tienen 
-- más de 5 de promedio (no incluye el 5)
SELECT * FROM alumnos WHERE promedio > 5;
>=

Selecciona un valor mayor o igual al indicado (lo incluye).

-- Selecciona los alumnos que tienen 
-- 6 o más de promedio (incluye el 6)
SELECT * FROM alumnos WHERE promedio >= 6;

Aunque es posible utilizar los operadores anteriores para comparar texto resulta más práctico el uso del operador LIKE.

Operador

Descripción

Ejemplo

LIKE

El texto dentro de la columna tiene que parecer al que se encuentra después del operador (entre comillas o apóstrofes).
El texto para comprar puede utilizar el caracter % que tiene como función representar cualquier caracter escrito cualquier número de veces.

-- El uso de % en las búsquedas de texto (LIKE) 
-- realiza las siguientes acciones.

-- Sea igual: 
SELECT * FROM usuarios WHERE email LIKE "[email protected]";

-- Comience con:
SELECT * FROM usuarios WHERE nombre LIKE "A%";

-- Termine con:
SELECT * FROM usuarios WHERE email LIKE "%.org";

-- Contenga el término:
SELECT * FROM publicaciones WHERE contenido LIKE "%mysql%";
NOT LIKE

El texto que se encuentra en la columna a consultar no debe parecer al texto que se encuentra después del operador.
El texto para comprar puede utilizar el caracter % que tiene como función representar cualquier caracter escrito cualquier número de veces.

-- El uso de % en las búsquedas de texto (NOT LIKE) 
-- realiza las siguientes acciones.

-- No sea igual: 
SELECT * FROM usuarios WHERE email NOT LIKE "[email protected]";

-- No comience con:
SELECT * FROM usuarios WHERE nombre NOT LIKE "A%";

-- No termine con:
SELECT * FROM usuarios WHERE email NOT LIKE "%.org";

-- No contenga el término:
SELECT * FROM publicaciones WHERE contenido NOT LIKE "%mysql%";

Recordar
Al comparar texto si se utiliza igual o LIKE sin porcentajes – % – se espera que la cadena de texto almacenada sea igual a la cadena de texto con la que se está comparando.

-- Las siguientes sentencias son similares

SELECT * FROM usuarios WHERE email = "[email protected]";
SELECT * FROM usuarios WHERE email LIKE "[email protected]";

-- Si se quieren seleccionar los registros cuyo valor no sea el que 
-- asignamos se utiliza != o NOT LIKE

SELECT * FROM usuarios WHERE email != "[email protected]";
SELECT * FROM usuarios WHERE email NOT LIKE "[email protected]";