Este artículo proporciona una referencia para los especificadores de formato numérico personalizados que se pueden usar al formatear números usando FORMAT()
función en SQL Server. Ejemplos incluidos.
Cadena de formato | Descripción/Ejemplo |
---|---|
0 | Marcador de posición cero . Reemplaza el cero con el dígito correspondiente si hay uno presente; de lo contrario, aparece cero en la cadena de resultados. Ejemplos : SELECT FORMAT(12.34, '0') R1, FORMAT(012.34, '00') R2, FORMAT(12.34, '000') R3, FORMAT(012.34, '0000') R4, FORMAT(12.54, '00') R5; +------+------+------+------+------+ | R1 | R2 | R3 | R4 | R5 | |------+------+------+------+------| | 12 | 12 | 012 | 0012 | 13 | +------+------+------+------+------+ |
# | Marcador de posición de dígito . Reemplaza el símbolo “#” con el dígito correspondiente si hay uno presente; de lo contrario, no aparece ningún dígito en la cadena de resultados. No aparece ningún dígito en la cadena de resultados si el dígito correspondiente en la cadena de entrada es un 0 no significativo. Ejemplos : SELECT FORMAT(12.34, '#') R1, FORMAT(012.34, '##') R2, FORMAT(12.34, '###') R3, FORMAT(012.34, '####') R4, FORMAT(12.54, '##') R5; +------+------+------+------+------+ | R1 | R2 | R3 | R4 | R5 | |------+------+------+------+------| | 12 | 12 | 12 | 12 | 13 | +------+------+------+------+------+ |
. | punto decimal . Determina la ubicación del separador decimal en la cadena de resultados. Ejemplos : SELECT FORMAT(12.34, '0.0', 'en-US') R1, FORMAT(12.34, '.00', 'en-US') R2, FORMAT(12.34, '.', 'en-US') R3, FORMAT(12.34, '.00', 'fr-FR') R4; +------+-------+------+-------+ | R1 | R2 | R3 | R4 | |------+-------+------+-------| | 12.3 | 12.34 | 12 | 12,34 | +------+-------+------+-------+ |
, | Separador de grupos y escala de números . Se puede utilizar como separador de grupos (también conocido como separador de miles) y como especificador de escala de números.
Para especificar un separador de grupo, coloque una o más comas entre marcadores de posición de dos dígitos (0 o #) que dan formato a los dígitos enteros de un número. Esto da como resultado que se inserte un carácter separador de grupo entre cada grupo de números en la parte integral de la salida. Para especificar un especificador de escala de números, coloque una o más comas inmediatamente a la izquierda del punto decimal explícito o implícito. Ejemplos:como separador de grupo : SELECT FORMAT(12345678, '#,#', 'en-US') 'US English', FORMAT(12345678, '#,#', 'fr-FR') 'French', FORMAT(12345678, '#,#', 'es-ES') 'Spanish'; +--------------+------------+------------+ | US English | French | Spanish | |--------------+------------+------------| | 12,345,678 | 12 345 678 | 12.345.678 | +--------------+------------+------------+ Ejemplos:como especificador de escala numérica : SELECT FORMAT(12000, '#,', 'en-US') 'R1', FORMAT(1234567890, '#,', 'en-US') R2, FORMAT(1234567890, '#,,', 'en-US') R3; +------+---------+------+ | R1 | R2 | R3 | |------+---------+------| | 12 | 1234568 | 1235 | +------+---------+------+ Ejemplos:como ambos : SELECT FORMAT(1234567890, '#,#,', 'en-US') R1, FORMAT(1234567890, '#,#,,', 'en-US') R2; +-----------+-------+ | R1 | R2 | |-----------+-------| | 1,234,568 | 1,235 | +-----------+-------+ |
% | Marcador de posición de porcentaje . Multiplica un número por 100 e inserta un símbolo de porcentaje localizado en la cadena de resultados. Ejemplos : SELECT FORMAT(0.1234, '#.# %', 'en-US') R1, FORMAT(0.1235, '#.#%', 'zh-cn') R2, FORMAT(0.125, '#. %', 'en-US') R3, FORMAT(0.1234, '%#.00,', 'tr') R4, FORMAT(0.1234, '#.#%', 'it') R5; +--------+-------+------+--------+-------+ | R1 | R2 | R3 | R4 | R5 | |--------+-------+------+--------+-------| | 12.3 % | 12.4% | 13 % | %12,34 | 12,3% | +--------+-------+------+--------+-------+ |
‰ | Marcador de posición por mil . Multiplica un número por 1000 e inserta un símbolo localizado por mil en la cadena de resultados. Ejemplos : SELECT FORMAT(0.01234, '#.# ‰', 'en-US') 'R1', FORMAT(0.01235, '#.# ‰', 'en-US') R2, FORMAT(0.0125, '#. ‰', 'en-US') R3, FORMAT(0.01234, '#.# ‰', 'fr-FR') R4; +--------+--------+------+--------+ | R1 | R2 | R3 | R4 | |--------+--------+------+--------| | 12.3 ‰ | 12.4 ‰ | 13 ‰ | 12,3 ‰ | +--------+--------+------+--------+ |
|
Notación exponencial . Si va seguido de al menos un cero ( Ejemplos : SELECT FORMAT(123456789, '0e0') R1, FORMAT(123456789, '0e+0') R2, FORMAT(123456789, '0E+00') R3, FORMAT(1234.56789, '0.0##e+00') R4, FORMAT(12.3456789-12, '0e-0') R5; +------+------+-------+-----------+------+ | R1 | R2 | R3 | R4 | R5 | |------+------+-------+-----------+------| | 1e8 | 1e+8 | 1E+08 | 1.235e+03 | 3e-1 | +------+------+-------+-----------+------+ |
| Personaje de escape . Hace que el siguiente carácter se interprete como un literal en lugar de un especificador de formato personalizado. Ejemplo : SELECT FORMAT(123, '\#0000') Result; +----------+ | Result | |----------| | #0123 | +----------+ |
| Delimitador de cadena literal . Indica que los caracteres incluidos deben copiarse en la cadena de resultados sin cambios. Ejemplo : SELECT FORMAT(23, '## Degrees') Result; +------------+ | Result | |------------| | 23 Degrees | +------------+ |
| Separador de secciones . Este es un especificador de formato condicional que define secciones con cadenas de formato separadas para números positivos, negativos y cero. Esto le permite aplicar diferentes formatos a un número dependiendo de si su valor es positivo, negativo o cero. Una cadena de formato personalizado puede contener hasta tres secciones separadas por punto y coma.
Tenga en cuenta que los valores negativos siempre se muestran sin un signo menos cuando se utilizan separadores de sección. Si desea que el valor con formato final tenga un signo menos, deberá incluir explícitamente el signo menos como parte de la cadena de formato personalizado. Esto también se aplica a cualquier otro formato preexistente asociado con un número.
Ejemplo:una sección (sin separadores de sección) SELECT FORMAT(123, '0 (Number)') Positive, FORMAT(-123, '0 (Number)') Negative, FORMAT(0, '0 (Number)') Zero; +--------------+---------------+------------+ | Positive | Negative | Zero | |--------------+---------------+------------| | 123 (Number) | -123 (Number) | 0 (Number) | +--------------+---------------+------------+ Tenga en cuenta que el signo menos permanece intacto, porque no usé ningún separador de sección. Ejemplos:dos secciones : /* EXAMPLE 1 - Same format string, different values */ SELECT FORMAT(123, '0 (Positive or Zero); 0 (Negative)') Positive, FORMAT(-123, '0 (Positive or Zero); 0 (Negative)') Negative, FORMAT(0, '0 (Positive or Zero); 0 (Negative)') Zero; +------------------------+-----------------+----------------------+ | Positive | Negative | Zero | |------------------------+-----------------+----------------------| | 123 (Positive or Zero) | 123 (Negative) | 0 (Positive or Zero) | +------------------------+-----------------+----------------------+ /* EXAMPLE 2 - Rounding. Negative values rounded to zero get formatted under the first format string. */ SELECT FORMAT(0.1, '0 (Positive or Zero); 0 (Negative)') Positive, FORMAT(-0.1, '0 (Positive or Zero); 0 (Negative)') Negative; +----------------------+----------------------+ | Positive | Negative | |----------------------+----------------------| | 0 (Positive or Zero) | 0 (Positive or Zero) | +----------------------+----------------------+ Ejemplos:tres secciones : /* EXAMPLE 1 - Basic Usage */ SELECT FORMAT(123, '0 (Positive); 0 (Negative); 0 (Zero)') Result; +----------------+ | Result | |----------------| | 123 (Positive) | +----------------+ /* EXAMPLE 2 - Same format string, different values */ SELECT FORMAT(123, '0 (Positive); 0 (Negative); 0 (Zero)') 'Positive', FORMAT(-123, '0 (Positive); 0 (Negative); 0 (Zero)') 'Negative', FORMAT(0, '0 (Positive); 0 (Negative); 0 (Zero)') 'Zero', FORMAT(0.123, '0 (Positive); 0 (Negative); 0 (Zero)') 'Rounded to Zero'; +----------------+----------------+-----------+-------------------+ | Positive | Negative | Zero | Rounded to Zero | |----------------+----------------+-----------+-------------------| | 123 (Positive) | 123 (Negative) | 0 (Zero) | 0 (Zero) | +----------------+----------------+-----------+-------------------+ /* EXAMPLE 3 - Second format string is empty */ SELECT FORMAT(123, '0 (Positive);; 0 (Zero)') 'Positive', FORMAT(-123, '0 (Positive);; 0 (Zero)') 'Negative', FORMAT(0, '0 (Positive);; 0 (Zero)') 'Zero', FORMAT(0.123, '0 (Positive);; 0 (Zero)') 'Rounded to Zero'; +----------------+-----------------+-----------+-------------------+ | Positive | Negative | Zero | Rounded to Zero | |----------------+-----------------+-----------+-------------------| | 123 (Positive) | -123 (Positive) | 0 (Zero) | 0 (Zero) | +----------------+-----------------+-----------+-------------------+ |
Otro | Todos los demás personajes. El carácter se copia en la cadena de resultados sin cambios. Ejemplo : SELECT FORMAT(12, '# °C') Result; +----------+ | Result | |----------| | 12 °C | +----------+ |
La lista anterior es una lista completa de cadenas de formato personalizado de .NET válidas, según la información de la documentación oficial de .NET para cadenas de formato personalizado en el sitio web de Microsoft en el momento de escribir este artículo.
La razón por la que estos son relevantes para SQL Server FORMAT()
La función es que solo acepta cadenas de formato .NET Framework válidas.
Además de los personalizados anteriores cadenas de formato, también puede usar estándar Cadenas de formato. Aquí hay una lista completa de cadenas de formato numérico estándar que puede usar con SQL Server.
También puede dar formato a los valores de fecha y hora. Consulte la lista de cadenas de formato de fecha y hora estándar, así como las cadenas de formato de fecha y hora personalizadas que puede usar con FORMAT()
función.
Si todavía está tratando de comprender qué es una cadena de formato, consulte ¿Qué es una cadena de formato en SQL Server? para una comprensión básica de las cadenas de formato y cómo se relacionan con FORMAT()
función.