Ir al contenido principal

OPERADORES DE COMPARACIÓN ok


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