martes, 25 de septiembre de 2012

Convertir de Números a Letras usando SQL (Oracle)

Para obtener por SQL la conversión de números a letras podemos usar lo siguiente:

SELECT TO_CHAR ( TO_DATE ( TO_CHAR ( 2012, '99999999999') , 'J'),  'JSP') EN_LETRAS FROM dual;
De lo cual obtenemos:

EN_LETRAS                                                                 
---------------------------------------------------------------------------
TWO THOUSAND TWELVE
1 row selected

Bien, podemos obtener desde el número 1 hasta 5,373,484 y es por la restricción de las fechas julianas (como fecha máxima tenemos 31-Dic-9999)

Explicando el por que y cómo:

Si vamos separando las operaciones que realiza observamos:

1. La primera conversión
TO_CHAR ( 2012, '99999999999') tan solo pasa el número a cadena
2. La segunda operación TO_DATE ( TO_CHAR ( 2012, '99999999999') , 'J') es donde convierte la cadena obtenida en fecha juliana.
3. La tercera parte, donde volvemos esta fecha obtenida en cadena nuevamente, utilizamos la máscara ‘JSP’ en donde J hace referencia a la fecha Juliana, y SP lo lleva a letras (Spell)

Y listo!! Tienes el número en letras.

Espero les sea de utilidad

2 comentarios:

  1. esto esta en ingles y si deseamos en espanol? trate cambiandole los NLS date y el NLS y nada

    ResponderBorrar
  2. Es correcto, cuando usamos el spellings con el TO_CHAR siempre lo devuelve en inglés...

    Quizá en alguna otra versión de Oracle acepte devolver el spelling en algún otro lenguaje.

    Se tendría que hacer por PL la función.

    ResponderBorrar

Translate