Cómo usar LIKE para comparar dos campos o columnas en Oracle.

Por lo regular, al usar el operador LIKE en una sentencia sql, lo comparamos con una cadena de texto, por ejemplo:

SELECT * FROM employees WHERE first_name LIKE '%ll%'; 

En el ejemplo anterior, obtendríamos todas las filas o registros de la tabla “employees” que contengan en su campo o columna “first_name” una doble ele minúscula.

Ahora, ¿qué tal si en lugar de escribir directamente el texto “ll” quisiéramos usar un campo o columna? Entonces tendríamos que usar el operador lógico LIKE de la siguiente forma:

...first_name LIKE '%' || nombre_del_campo_a_comparar || '%';

Donde “nombre_del_campo_a_comparar” es la columna o campo de tipo cadena de una tabla. El operador “||” en oracle, sirve para concatenar cadenas.

Bueno espero y esta entrada les sea de utilidad.

¡Hasta pronto!

Cómo obtener cuántos días hay entre dos fechas en Oracle.

Para obtener los días entre dos fechas a través de una sentencia Sql en Oracle podemos usar sencillamente la aritmética de tipos DATE (fecha) de esta base de datos. Para hacer esta operación los operandos deben ser de tipo DATE (fecha).

Supongamos que tenemos dos columnas o campos llamados START_DATE y END_DATE, ambos de tipo DATE, en una tabla llamada JOB_HISTORY. Para obtener los días entre dichas fechas utilizaríamos algo así:

SELECT 
    end_date, start_date, end_date - start_date as dias
FROM 
    job_history;

Simplemente restamos de la fecha mayo o más actual (en este caso end_date) la fecha menor o más antigua (start_date) usando le palabra reservada o símbolo de menos ( – ). El resultado sería algo así:

Hay que tomar en cuenta que en esta operación Oracle toma como comienzo de la fecha la hora cero de día, es decir que no incluye el día final. Por ejemplo, supongamos que queremos obtener los días que hay entre el primero de enero del año dos mil y el 31 de enero de ese mismo año, la consulta sql sería:

select 
    TO_DATE('31/01/2000','DD/MM/YYYY') - TO_DATE('01/01/2000','DD/MM/YYYY') as dias
from dual;

La ejecución de esta consulta nos daría como resultado 30 días y no 31 como algunos esperaríamos. La solución sería añadir 1 a la operación:

select 
    (TO_DATE('31/01/2000','DD/MM/YYYY') - TO_DATE('01/01/2000','DD/MM/YYYY')) + 1 as dias
from dual;

Espero y les sirva este entrada o post. ¡Hasta la próxima!

Sql Developer: Cómo cargar todos los registros resultantes de una consulta SQL.

Por defecto y debido a cuestiones de rendimiento, SQL Developer de Oracle, sólo muestra 200 filas en el área de resultados después de ejecutar una consulta SQL. A medida que avanzamos con la barra de desplazamiento, va mostrando los resultados en conjuntos de 200 filas hasta llegar al fin.

SQL Developer no muestra todos los resultados de una sola vez, como a veces lo necesitamos. El estar desplazándonos por la barra de desplazamiento de la ventana de resultados es tardado y tedioso. Sin embargo, existe un pequeño truco para hacer que muestre los resultados completos una vez que hayamos  ejecutado la consulta SQL y nos muestre los primeros registros:

Nos ubicarnos en la ventana o área de resultados de la consulta y oprimimos las teclas Ctrl-Fin al mismo tiempo.

Esto nos llevará al última fila de la consulta y por ende cargará todas las filas de la consulta. La próxima vez que quieras que SQL Developer muestra todas las filas resultantes, aplica este truco.

¡Saludos!