Oracle Database proporciona el TO_CHAR(number)
función que le permite formatear números en función de un modelo de formato determinado. Hay tres elementos de formato que puede usar con TO_CHAR()
para devolver un valor como moneda.
Elementos del formato de moneda
Los elementos de formato de moneda son L
, C
y U
.
C | Devuelve el símbolo de moneda ISO (el valor actual de la NLS_ISO_CURRENCY parámetro). |
L | Devuelve el símbolo de la moneda local (el valor actual de la NLS_CURRENCY parámetro). |
U | Devuelve el símbolo de moneda dual del euro (u otro), determinado por el valor actual de la NLS_DUAL_CURRENCY parámetro. |
Estos modelos de formato le permiten generar el signo de moneda según la configuración de su moneda/región, en lugar de tener que proporcionar un símbolo de moneda fijo.
Si bien es cierto que puede proporcionar un literal de cadena para la moneda (por ejemplo, un signo de dólar ($
) para dólares), esto supone que la moneda está denominada en ese valor codificado. Hay muchas otras monedas posibles en todo el mundo, y los elementos de formato pueden devolver dinámicamente el símbolo de la moneda local para la sesión del usuario.
Ejemplo
Aquí hay un ejemplo para demostrarlo:
ALTER SESSION SET NLS_TERRITORY = 'Australia';
SELECT
TO_CHAR(12345, 'fmL99G999D00') AS "r1",
TO_CHAR(12345, 'fmC99G999D00') AS "r3",
TO_CHAR(12345, 'fmU99G999D00') AS "r3"
FROM DUAL;
Resultado:
r1 r3 r3 _____________ _______________ _____________ $12,345.00 AUD12,345.00 $12,345.00
La única diferencia entre estas tres columnas es el elemento de formato de moneda. El primero usa L
, el segundo usa C
, y el tercero usa U
.
Todos usan el fm
modificador de formato para suprimir cualquier relleno. También usan el 9
y 0
elementos de formato para generar los números (el 0
elemento incluye ceros iniciales/posteriores). También incluyen un separador de grupo (representado por G
), un carácter decimal (representado por D
).
Divisas duales
En el ejemplo anterior, configuré el NLS_TERRITORY
a Australia
. Esto dio como resultado que se devolviera el mismo símbolo de moneda en dos de las tres columnas (es decir, el r1
y r3
columnas).
En el siguiente ejemplo, uso un territorio diferente:
ALTER SESSION SET NLS_TERRITORY = 'Denmark';
SELECT
TO_CHAR(12345, 'fmL99G999D00') AS "r1",
TO_CHAR(12345, 'fmC99G999D00') AS "r3",
TO_CHAR(12345, 'fmU99G999D00') AS "r3"
FROM DUAL;
Resultado:
r1 r3 r3 ______________ _______________ _____________ kr12.345,00 DKK12.345,00 €12.345,00
Esta vez obtenemos un símbolo de moneda diferente para cada uno de los r1
y r3
columnas.
Consulte Cómo verificar los valores de los parámetros NLS si necesita verificarlos.
El 'nlsparam'
Argumento
Al usar TO_CHAR()
función, el 'nlsparam'
El argumento se puede utilizar para especificar el carácter decimal y el separador de grupo, el símbolo de moneda local y el símbolo de moneda internacional.
Toma la siguiente forma:
'NLS_NUMERIC_CHARACTERS = ''dg''
NLS_CURRENCY = ''text''
NLS_ISO_CURRENCY = territory '
Ejemplo:
SELECT
TO_CHAR(
1234.56,
'fmL99G999D99',
'NLS_NUMERIC_CHARACTERS = '',.''
NLS_CURRENCY = ''€''
NLS_ISO_CURRENCY = Germany'
)
FROM DUAL;
Resultado:
€1.234,56
Aquí está de nuevo, pero esta vez reemplazo L
con C
en el modelo de formato:
SELECT
TO_CHAR(
1234.56,
'fmC99G999D99',
'NLS_NUMERIC_CHARACTERS = '',.''
NLS_CURRENCY = ''€''
NLS_ISO_CURRENCY = Germany'
)
FROM DUAL;
Resultado:
EUR1.234,56
El C
devuelve el símbolo de moneda ISO, que en este caso es EUR
.
Consulte esta Lista completa de elementos de formato de número en Oracle para obtener una lista de elementos de formato que se pueden usar para formatear números con TO_CHAR()
función.