sql >> Base de Datos >  >> NoSQL >> MongoDB

Dar formato a un número como moneda en SQL

Algunos DBMS tienen funciones que nos permiten formatear números como moneda simplemente pasando la cadena de formato adecuada. Esto convierte el número en una cadena con el símbolo de moneda aplicable, el separador de grupo y el punto decimal (si corresponde).

Otros DBMS no lo hacen tan fácil y primero debe trabajar un poco.

A continuación se muestran ejemplos del uso de SQL para formatear números como moneda en algunos de los DBMS más populares.

Oráculo

Oracle Database nos proporciona el TO_CHAR(number) función, que nos permite formatear números pasando un modelo de formato (o cadena de formato). Podemos usar esta función para devolver un número como moneda.

Oracle proporciona algunos elementos de formato para devolver el símbolo de moneda, según el símbolo de moneda que necesite:el símbolo de moneda local, el símbolo de moneda ISO o el símbolo de moneda dual.

He aquí un ejemplo de los tres:

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   

Consulte Cómo dar formato a un número como moneda en Oracle para obtener más información y ejemplos.

Servidor SQL

SQL Server proporciona la función FORMAT(), que nos permite formatear números y fechas. El C El especificador de formato se puede utilizar para devolver un número como moneda:

SELECT FORMAT(1234, 'C');

Resultado:

$1,234.00

Hay otras cosas que puede hacer con la cadena de formato, como especificar cuántos lugares decimales devolver.

La función también acepta un tercer argumento opcional, que se puede usar para especificar la configuración regional que se usará para el formato de número y moneda. Diferentes lugares usan diferentes convenciones para sus números y moneda.

Consulte Cómo dar formato a números como moneda en SQL Server (T-SQL) para obtener más información y ejemplos.

PostgreSQL

PostgreSQL tiene un money tipo de datos que normalmente se formateará en la moneda local cuando se genere:

SELECT CAST(3145 as money);

Resultado:

$3,145.00

PostgreSQL también tiene un TO_CHAR() función que convierte el valor en una cadena y le da formato en función de la cadena de formato que proporcionamos. Por lo tanto, podemos usarlo para formatear números como moneda pasando la cadena de formato adecuada.

Consulte Cómo dar formato a números como moneda en PostgreSQL para obtener más información.

MySQL

En MySQL, tenemos que trabajar un poco más. MySQL no nos proporciona un especificador de formato para el símbolo de moneda, por lo que debemos proporcionar el nuestro:

SELECT CONCAT('$', FORMAT(1234.5678, 2));

Resultado:

$1,234.57

Aquí, usamos el CONCAT() función para concatenar el símbolo de moneda y el número, y usamos el FORMAT() función para formatear el número en nuestro formato deseado.

Es posible especificar una configuración regional para el formato numérico. Esto determina qué caracteres se utilizan para el separador de grupos y el punto decimal.

Consulte Cómo dar formato a números como moneda en MySQL para obtener más información.

MariaDB

MariaDB es muy parecido a MySQL, y podemos usar el mismo método que usamos con MySQL.

Aquí hay un ejemplo que especifica una configuración regional para usar para el formato de número:

SELECT CONCAT('€', FORMAT(8790.2398, 2, 'de_DE'));

Resultado:

€8.790,24

En este caso, proporcionamos el símbolo del euro ( ) y formateó el número para usar las convenciones de numeración utilizadas en Alemania.

Consulte Dar formato a un número como moneda en MariaDB para obtener más información.

SQLite

SQLite tiene un PRINTF() función que nos permite formatear un número basado en una cadena de formato. Por ejemplo, podemos usar esto para formatear el número a un número determinado de lugares decimales, además de agregar un símbolo de moneda.

SELECT PRINTF("$%.2f", 123.457);

Resultado:

$123.46

Actualizar :SQLite 3.38.0 (lanzado el 22 de febrero de 2022) cambió el nombre de PRINTF() función para FORMAT() . El PRINTF() original el nombre se conserva como un alias para la compatibilidad con versiones anteriores.

Entonces, el ejemplo anterior se puede cambiar a esto:

SELECT FORMAT("$%.2f", 123.457);

Resultado:

$123.46

Consulte la documentación de SQLite para obtener más información sobre FORMAT() función.