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

Cómo formatear números en SQL

La mayoría de los principales RDBMS nos brindan formas de formatear números usando SQL. Algunos solo brindan funciones básicas de formato, mientras que otros son más avanzados.

A continuación se muestran ejemplos de cómo formatear un número en algunos de los RDBMS más populares.

MySQL

En MySQL, podemos usar el FORMAT() función para formatear un número a un formato específico. Esta función acepta tres parámetros; el número, el número de lugares decimales y una configuración regional opcional:

SELECT FORMAT(123456.789, 2);

Resultado:

123,456.79

Como se mencionó, también puede pasar un tercer argumento para especificar la configuración regional que se usará para el patrón de formato. Consulte Cómo formatear números en MySQL para ver un ejemplo.

Para dar formato a números como moneda, consulte Cómo dar formato a números como moneda en MySQL.

Oráculo

Oracle Database nos brinda una serie de opciones cuando se trata de formatear números.

En particular, el TO_CHAR(number) La función nos permite dar formato a un número en función de nuestro propio modelo de formato personalizado.

Ejemplo:

SELECT 
    TO_CHAR(12345, 'fmL99G999D00')
FROM DUAL;

Resultado:

$12,345.00

El primer argumento es el número a formatear y el segundo argumento es el modelo de formato. El modelo de formato consta de uno o más elementos de formato, cada uno de los cuales representa un elemento diferente en la salida formateada.

En el ejemplo anterior, usamos el 9 carácter para representar cada dígito, y el 0 carácter para generar el dígito o cero (dependiendo de si existe o no un dígito en esa posición). También usamos G para un separador de grupo consciente de la configuración regional y D para un separador decimal consciente de la configuración regional. El fm suprime cualquier relleno inicial o final que pueda aplicarse al resultado.

Aquí hay una lista completa de elementos de formato que puede usar para su modelo de formato al formatear números.

Hay otras formas de dar formato a los números en Oracle. Por ejemplo, el LPAD() La función se puede usar para convertir números en una cadena y formatearlos exactamente como desee sobre la marcha. Funciones como CAST() también puede tener un efecto en cómo se formatea un número, según el tipo de datos al que se convierte.

Consulte Cómo formatear números en Oracle para obtener más detalles y ejemplos.

PostgreSQL

Al igual que Oracle, PostgreSQL también tiene un TO_CHAR() función, y funciona más o menos de la misma manera:

SELECT TO_CHAR(923, 'fm000G000th');

Resultado:

000,923rd

Aquí, usé el 0 elemento de formato para generar ceros a la izquierda, incluso cuando el número original no tenía ningún dígito en ese lugar. En este caso, utilicé el th elemento de formato para convertir el número a su ordinal. También usé G para un separador de grupo consciente de la configuración regional.

Aquí hay una lista de patrones de plantilla en los que puede consistir la cadena de formato al formatear números, así como los modificadores de formato.

Otra forma de formatear un número en PostgreSQL es convertirlo a money tipo de datos. Números almacenados como money type se generan en un formato que tiene en cuenta la configuración regional, con el símbolo de moneda apropiado, separador de grupo, separador decimal, etc.:

SELECT CAST(10000 as money);

Resultado:

$10,000.00

Consulte Cómo dar formato a números en PostgreSQL para obtener más ejemplos de cómo dar formato a números en PostgreSQL.

Servidor SQL

SQL Server tiene el FORMAT() función, que funciona de forma muy parecida a TO_CHAR() de Oracle y PostgreSQL función, ya que le permite formatear números en función de una cadena de formato:

SELECT 
    FORMAT(123456.789, 'N') AS "Number",
    FORMAT(123456.789, 'P') AS "Percent",
    FORMAT(123456.789, 'C') AS "Currency";

Resultado:

+------------+----------------+-------------+
| Number     | Percent        | Currency    |
|------------+----------------+-------------|
| 123,456.79 | 12,345,678.90% | $123,456.79 |
+------------+----------------+-------------+

Este ejemplo muestra tres especificadores de formato estándar, cada uno de los cuales genera el número en un formato específico.

También podemos usar nuestros propios especificadores de formato personalizados, que nos permiten crear nuestro propio formato, en caso de que el formato estándar no sea el que queremos.

También puede hacer cosas como dar formato a los números en su equivalente hexadecimal o usar notación exponencial, etc.

Y puede pasar un tercer argumento opcional para especificar la configuración regional para la cual formatear el número (formatea el número usando las convenciones de esa configuración regional).

Consulte Cómo formatear números en SQL Server para obtener más ejemplos.

MariaDB

Al igual que MySQL, MariaDB tiene un FORMAT() función, que proporciona formato de número básico.

Aquí hay un ejemplo del uso de esta función para formatear un número usando diferentes configuraciones regionales:

SELECT 
    FORMAT(123456.789, 2, 'ta_IN') AS "Tamil, India",
    FORMAT(123456.789, 2, 'de_DE') AS "German, Germany",
    FORMAT(123456.789, 2, 'zh_HK') AS "Chinese, Hong Kong";

Resultado:

+--------------+-----------------+--------------------+
| Tamil, India | German, Germany | Chinese, Hong Kong |
+--------------+-----------------+--------------------+
| 1,23,456.79  | 123.456,79      | 123,456.79         |
+--------------+-----------------+--------------------+

Consulte Cómo formatear números en MariaDB para obtener más ejemplos.

SQLite

SQLite es más limitado que los otros DBMS cuando se trata de formatear números. Sin embargo, hay formas de obtener un formato de número básico:

SELECT PRINTF("%,d", 123456789);

Resultado:

123,456,789

El PRINTF() La función puede generar separadores de grupo para números enteros, pero no para números reales/coma flotante. Para dar formato a números reales/coma flotante, necesitará trabajar un poco más. Consulte Formatear números con una coma en SQLite para ver un ejemplo de lo que quiero decir.

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("%,d", 123456789);

Resultado:

123,456,789