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:
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:
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
esto esta en ingles y si deseamos en espanol? trate cambiandole los NLS date y el NLS y nada
ResponderBorrarEs correcto, cuando usamos el spellings con el TO_CHAR siempre lo devuelve en inglés...
ResponderBorrarQuizá 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.