Publicado el Dejar un comentario

Mostrar el nombre del mes actual en español en Oracle usando la función to_char y sysdate.

¿Como forzar que la función to_char de Oracle regrese el nombre del mes en español? Cuando el sistema operativo de un equipo cliente, donde se ejecutan sentencias Sql de Oracle que obtienen el nombre del mes está en otro lenguaje que no sea español, el nombre del mes lo regresa en el idioma por defecto. Por ejemplo, si ejecutamos la sentencia de la siguiente forma en un equipo cliente donde su lenguaje es inglés:

select to_char(sysdate, 'Month') as mes from dual;

MES
November

Nos regresaría el nombre del mes en inglés como se muestra.

Si queremos forzar que regrese el nombre del mes en otro lenguaje, por ejemplo español, utilizaríamos esta forma:

select to_char(sysdate, 'Month','nls_date_language=spanish') as mes from dual;

MES
Noviembre

Ahora el nombre del mes lo regresa en el lenguaje especificado.

O en lenguaje italiano sería:

select to_char(sysdate, 'Month','nls_date_language=italian') as mes from dual;

MES
Novembre

¿Te fue útil el artículo? Por favor visita los patrocinadores para seguir publicando artículos como estos. ¿Tienes alguna duda informática? Déjame tu comentario.

¡Saludos!

Publicado el Dejar un comentario

Listar tablas desde SQL en Oracle, Postgresql y MySQL

Una vez conectados a la base de datos desde un cliente SQL, para listar las tablas a las que tenemos acceso en Oracle sería:

SELECT table_name FROM user_tables;

En Postgresql:

SELECT table_name FROM information_schema.tables WHERE table_schema = 'public';

En la sentencia anterior sustituimos ‘public‘ por el nombre del esquema correspondiente si se tiene más esquemas en la base de datos.

En MySQL:

SELECT table_name FROM information_schema.tables WHERE table_schema = 'nombre_base_de_datos';

Donde nombre_base_de_datos se sustituye por el nombre de la base de datos a la que estamos conectados.

¡Saludos!

Publicado el Dejar un comentario

Obtener lista de valores separados por comas con sql en Oracle 10g

Si queremos obtener  una lista de valores separados por comas, cuyos valores representen el contenido de una columna de varias filas, en Oracle 10g, podemos usar la función PL/SQL WMSYS.WM_CONCAT.

Veamos un ejemplo más ilustrativo:

select WMSYS.WM_CONCAT(ename) as "Lista de nombres" from scott.emp;

Nos daría como resultado:

Una sola fila con la lista de los nombres de empleados separados por comas.

Podemos también mostrar los resultados agrupados por otro campo, por ejemplo el número de departamento:

select deptno as "Departamento", WMSYS.WM_CONCAT(ename) as "Lista de nombres" 
from scott.emp
group by deptno;

Por cada grupo, en esta caso número de departamento, crea una lista de los empleados pertenecientes a cada uno.

Hay que comentar que Oracle no recomienda el uso de esta función porque no está soportada por ellos. De hecho en la versión 12g está fución ha sido eliminada. A partir de la versión 11g fue reemplazada por LISTAGG la cual veremos en otra entrada.

Es posible también lograr el listado de  nombres por departamento en Oracle 10g  sin utilizar la función WMSYS.WM_CONCAT. Utilizando las sentencias analíticas de Oracle que se muestran aquí.

¡Hasta la próxima!