El operador de igualdad (=
) es probablemente el operador más utilizado en SQL. Compara la igualdad de dos expresiones. Incluso si acaba de comenzar su viaje SQL, probablemente conocerá este operador.
Tabla de origen
Imagine que nuestra base de datos contiene la siguiente tabla. Esta es la tabla que usaremos para los ejemplos de esta página.
SELECT * FROM Pets;
Resultado:
+---------+-------------+-----------+-----------+------------+ | PetId | PetTypeId | OwnerId | PetName | DOB | |---------+-------------+-----------+-----------+------------| | 1 | 2 | 3 | Fluffy | 2020-11-20 | | 2 | 3 | 3 | Fetch | 2019-08-16 | | 3 | 2 | 2 | Scratch | 2018-10-01 | | 4 | 3 | 3 | Wag | 2020-03-15 | | 5 | 1 | 1 | Tweet | 2020-11-28 | | 6 | 3 | 4 | Fluffy | 2020-09-17 | | 7 | 3 | 2 | Bark | NULL | | 8 | 2 | 4 | Meow | NULL | +---------+-------------+-----------+-----------+------------+ (8 rows affected)
Ejemplo
Si quisiéramos tener todas las mascotas con un dueño determinado, podríamos hacer esto:
SELECT *
FROM Pets
WHERE OwnerId = 3;
Resultado:
+---------+-------------+-----------+-----------+------------+ | PetId | PetTypeId | OwnerId | PetName | DOB | |---------+-------------+-----------+-----------+------------| | 1 | 2 | 3 | Fluffy | 2020-11-20 | | 2 | 3 | 3 | Fetch | 2019-08-16 | | 4 | 3 | 3 | Wag | 2020-03-15 | +---------+-------------+-----------+-----------+------------+
Nuestra consulta usa el operador igual (=
) para comparar la igualdad del valor del OwnerId
columna y 3
.
En este caso, el propietario número 3 tiene 3 mascotas.
Cuerdas
Al comparar con un valor de cadena, use comillas alrededor de la cadena. Por ejemplo, si quisiéramos obtener información sobre todas las mascotas llamadas Fluffy, podríamos hacer lo siguiente:
SELECT *
FROM Pets
WHERE PetName = 'Fluffy';
Resultado:
+---------+-------------+-----------+-----------+------------+ | PetId | PetTypeId | OwnerId | PetName | DOB | |---------+-------------+-----------+-----------+------------| | 1 | 2 | 3 | Fluffy | 2020-11-20 | | 6 | 3 | 4 | Fluffy | 2020-09-17 | +---------+-------------+-----------+-----------+------------+
Nuestra consulta usa el operador igual (=
) para comparar la igualdad del valor de PetName
columna y la cadena Fluffy
.
En nuestro caso, podemos ver que el hotel de mascotas actualmente tiene dos mascotas llamadas Fluffy.
Múltiples Condiciones
Si tiene varias condiciones, puede usar varios operadores iguales.
Así:
SELECT * FROM Pets
WHERE PetName = 'Fluffy' OR PetName = 'Tweet';
Resultado:
+---------+-------------+-----------+-----------+------------+ | PetId | PetTypeId | OwnerId | PetName | DOB | |---------+-------------+-----------+-----------+------------| | 1 | 2 | 3 | Fluffy | 2020-11-20 | | 5 | 1 | 1 | Tweet | 2020-11-28 | | 6 | 3 | 4 | Fluffy | 2020-09-17 | +---------+-------------+-----------+-----------+------------+
Podemos ver que devolvió las filas donde PetName
la columna era Fluffy
o Tweet
.
Negar la Condición
Puedes usar el NOT
operador para negar la condición proporcionada por el operador igual. He aquí un ejemplo:
SELECT *
FROM Pets
WHERE NOT PetName = 'Fluffy';
Resultado:
+---------+-------------+-----------+-----------+------------+ | PetId | PetTypeId | OwnerId | PetName | DOB | |---------+-------------+-----------+-----------+------------| | 2 | 3 | 3 | Fetch | 2019-08-16 | | 3 | 2 | 2 | Scratch | 2018-10-01 | | 4 | 3 | 3 | Wag | 2020-03-15 | | 5 | 1 | 1 | Tweet | 2020-11-28 | | 7 | 3 | 2 | Bark | NULL | | 8 | 2 | 4 | Meow | NULL | +---------+-------------+-----------+-----------+------------+
Una forma alternativa de hacer esto es usar el operador no igual a, que es <>
o !=
(o ambos) dependiendo de su DBMS.
Valores NULOS
Es posible que haya notado que nuestra tabla de muestra original contiene un par de NULL
valores en la columna DOB.
Una columna que contiene NULL
significa que no tiene valor. Esto es diferente a 0
o false
, o incluso una cadena vacía.
No puede usar el operador de igualdad para comparar con NULL
. En realidad, esto puede depender de su DBMS y su configuración. Pero por ahora, veamos qué sucede si trato de comparar la columna DOB con NULL
.
SELECT * FROM Pets
WHERE DOB = NULL;
Resultado:
(0 rows affected)
La forma de probar NULL
es usar IS
.
Por lo tanto, necesitaríamos reescribir la declaración anterior de la siguiente manera.
SELECT * FROM Pets
WHERE DOB IS NULL;
Resultado:
+---------+-------------+-----------+-----------+-------+ | PetId | PetTypeId | OwnerId | PetName | DOB | |---------+-------------+-----------+-----------+-------| | 7 | 3 | 2 | Bark | NULL | | 8 | 2 | 4 | Meow | NULL | +---------+-------------+-----------+-----------+-------+
NULL
Los valores pueden ser una cosa difícil de entender para los principiantes. En realidad, ¡pueden ser algo complicado para que los desarrolladores experimentados se familiaricen! En SQL, NULL
tiene un significado ligeramente diferente a NULL
en la mayoría de los demás lenguajes de programación.
Pero lo importante a recordar es que, en SQL, NULL
significa la falta de un valor. No hay valor. Por lo tanto, no podemos decir que es igual o no igual a otra cosa, porque no hay ningún valor para empezar.
Si está interesado, consulte SQL Server ANSI_NULLS Explained
para ver cómo puedes cambiar la forma NULL
los valores se tratan en SQL Server.