Hasta
aquí solo se ha hablado del operador de comparación igual. Hay otros operadores
alternativos que también pueden ser utilizados. Los operadores de desigualdad
como “menor que”, “mayor que”, “menor que o igual”, “mayor que o igual”,
“diferente” estos pueden ser utilizados para crear condiciones. El operador
BETWEEN que permite la comparación de rango. El operador IN que permite
comparar la pertenencia de un valor a un grupo de valores, el operador LIKE que
permite buscar un determinado patrón en información carácter y por último el
operador IS NULL para identificar columnas con valores nulos. Estos operadores
pueden ser utilizados en cualquier combinación en la clausula WHERE.
IGUALDAD
Y DESIGUALDAD
Limitar
las filas regresadas por una consulta involucra especificar la clausula WHERE
adecuada. Si la clausula es demasiada restrictiva pocas o ninguna fila será
regresada. Si la condición es menor restrictiva entonces la consulta regresara
mas filas.
Para
probar una condición de igual se utiliza el operador igual “=”, las filas de
una consulta será regresadas si la condición es verdadera.
-- CONDICION DE IGUALDAD CON NUMEROS --
REGRESA LOS EMPLEADOS CON NUMERO DE IDENTIFICACION DE 100
SELECT employee_id, first_name,
last_name, email FROM employees WHERE employee_id = 100;
-- CONDICION DE IGUALDAD CON NUMEROS --
REGRESA LOS EMPLEADOS QUE PERTENECEN AL DEPARTMENT ID IGUAL A 20
SELECT employee_id, first_name,
last_name, department_id FROM employees WHERE department_id = 20;
-- CONDICION DE IGUALDAD CON NUMEROS --
REGRESA LOS EMPLEADOS QUE GANEN UN SALARY IGUAL 2600
SELECT employee_id, first_name,
last_name, email, salary FROM employees WHERE salary = 2600;
-- CONDICION DE IGUAL CON INFORMACION
CARACTER DEBE SER EXACTAMENTE IGUAL YA QUE ES CASE-SENSITIVE Y EL LITERAL DE
COMPARACION
-- DEBE IR ENCERRADO EN COMILLAS SIMPLES
SELECT country_id, country_name FROM
COUNTRIES WHERE country_id = 'AR';
SELECT location_id, street_address,
postal_code, city FROM locations WHERE city = 'Roma';
SELECT department_id, department_name
FROM departments WHERE department_name = 'Shipping';
SELECT job_id, job_title FROM jobs WHERE
job_id = 'FI_MGR';
SELECT employee_id, first_name || ' ' ||
last_name name_full FROM employees WHERE job_id = 'PR_REP';
SELECT employee_id, first_name || ' ' ||
last_name full_name FROM employees WHERE job_id = 'HR_REP';
SELECT
employee_id, first_name || ' ' || last_name full_name FROM employees WHERE
job_id = 'SH_CLERK';
-- CONDICIONES DE
IGUALDAD CON FECHAS. EL FORMATO POR DEFECTO DE LAS FECHA ES DD-MON-YYYY. DD ES
DIAS, MON SON LAS PRIMERAS TRES LETRAS DEL MES Y
-- YYYY CUATRO
DIGITOS DEL AÑO, AUN QUE TAMBIEN PERMITE DEFINIR DOS DIGITOS EN EL AÑO Y SE
INTERPRETA DE LA SIGUIENTE MANERA SI EL NUMERO ES DEL
-- 50 AL 99 EL
SERVIDOR LO INTERPRETA COMO EL SIGLO PASADO.
SELECT
employee_id, first_name || ' ' || last_name full_name, hire_date FROM employees
WHERE hire_date = '21-06-2007';
SELECT
employee_id, first_name || ' ' || last_name full_name, hire_date FROM employees
WHERE hire_date = '21-JUN-2007';
SELECT
employee_id, first_name || ' ' || last_name full_name, hire_date FROM employees
WHERE hire_date = '21-jun-2007';
SELECT
employee_id, first_name || ' ' || last_name full_name, hire_date FROM employees
WHERE hire_date = '21-jun-07';
SELECT
employee_id, first_name || ' ' || last_name full_name, hire_date FROM employees
WHERE hire_date = '13-01-2001';
SELECT
employee_id, first_name || ' ' || last_name full_name, hire_date FROM employees
WHERE hire_date = '13-ENE-2001';
SELECT
employee_id, first_name || ' ' || last_name full_name, hire_date FROM employees
WHERE hire_date = '13-ene-2001';
SELECT
employee_id, first_name || ' ' || last_name full_name, hire_date FROM employees
WHERE hire_date = '13-01-01';
SELECT
employee_id, start_date, end_date, job_id FROM job_history WHERE start_date =
'17-09-1995';
SELECT
employee_id, start_date, end_date, job_id FROM job_history WHERE start_date =
'17-SEP-1995';
SELECT
employee_id, start_date, end_date, job_id FROM job_history WHERE start_date =
'17-sep-1995';
SELECT
employee_id, start_date, end_date, job_id FROM job_history WHERE start_date =
'17-sep-95';
SELECT
employee_id, start_date, end_date, job_id FROM job_history WHERE start_date =
'17-SEP-95';
Condiciones de desigualdad mejoran la clausula
WHERE. Rangos y Coincidencias de patrones son posibles de realizarlos con los
operadores de desigualdad e igualdad. Pero es preferible utilizar el operador
BETWEEN y LIKE para estas comparaciones.
Operadores
de desigualdad
<
|
Menor
que
|
>
|
Mayor
que
|
<=
|
Menor
que o igual que
|
>=
|
Mayor
que o igual que
|
<>
|
Diferente
|
¡=
|
Diferente
|
=
|
Igual
que
|
EJEMPLOS DE OPERADORES DE DESIGUALDAD
CON VALORES NUMERICOS
SELECT region_id, region_name FROM
regions WHERE region_id > 2;
SELECT region_id, region_name FROM
regions WHERE region_id >= 2;
SELECT region_id, region_name FROM
regions WHERE region_id < 2;
SELECT region_id, region_name FROM
regions WHERE region_id <= 2;
SELECT region_id, region_name FROM
regions WHERE region_id <> 2;
SELECT region_id, region_name FROM
regions WHERE region_id != 2;
SELECT job_id, job_title, min_salary
FROM jobs WHERE min_salary >= 5000;
SELECT job_id, job_title, min_salary
FROM jobs WHERE min_salary < 5000;
SELECT employee_id, start_date,
end_date, job_id, department_id FROM job_history WHERE department_id >= 100;
SELECT employee_id, start_date,
end_date, job_id, department_id FROM job_history WHERE department_id < 100;
La
comparación de valores numéricos es intuitiva y puede ser leída de manera
natural. Sin embargo la comparación con caracteres y fechas es un poco más
compleja. La comparación de valores carácter es llevada a cabo mediante la representación
numérica de cada carácter esto en base al juego de caracteres de la base de
datos. Cada carácter tiene una representación numérica al cual es convertido
los valores son sumados y al final se comparan valores numéricos. Algo muy
similar aplica para los valores fecha ya que las fechas internamente el
servidor tiene un valor numérico que las representa. Ejemplo:
--
EJEMPLOS DE COMPARACION DE VALORES CARACTER Y FECHA
SELECT
region_id, region_name FROM regions WHERE region_name >= 'Aurope';
SELECT
region_id, region_name FROM regions WHERE region_name >= 'Asia';
SELECT
region_id, region_name FROM regions WHERE region_name > 'Asaa';
SELECT
'SI' RESULTADO FROM DUAL WHERE 'A' >= 'B';
SELECT
'SI' RESULTADO FROM DUAL WHERE 'B' >= 'A';
SELECT
employee_id, first_name || ' ''s ' NOMBRE_PLURAL, hire_date FROM employees WHERE hire_date >
'24-JUN-2006';
SELECT
employee_id, first_name || ' ''s ' NOMBRE_PLURAL, hire_date FROM employees WHERE hire_date <=
'18-MAY-2003';
SELECT
employee_id, first_name || q'< '>' NOMBRE_PLURAL, hire_date FROM employees WHERE HIRE_DATE !=
'13-ENE-2001';
SELECT
employee_id, first_name || q'< '>' NOMBRE_PLURAL, hire_date FROM employees WHERE HIRE_DATE =
'13-ENE-2001';
SELECT
* FROM employees ORDER BY hire_date;
Comentarios
Publicar un comentario