Formatear números en SQL Server
Una duda que suele tener la gente es como formatear los datos numérico es
SQL Server - Es bastante común tener que formatear un número completando con ceros hasta un número determinado de posiciones.
Podemos hacer un bucle para concatenar la expresion resultante, pero no parece ni mucho menos la opción mas adecuada.
El siguiente script ilustra una forma más eficiente de conseguir el mismo resultado.
DECLARE @num int,
@formato varchar(10),
@expresion varchar(10)
SET @formato = '0000000000'
SET @num = 2002
SET @expresion = RIGHT( @formato + cast(@num AS varchar), 10)
SELECT @expresion
|
La idea es concatenar una expresion de formato fijo - los ceros - con
el número a formatear. Posteriormente utilizamos la función RIGHT para
recortar los n elementos de la derecha.
La salida de la ejecucion es la siguiente:
DATO_FORMATEADO
---------------0000002002
|
Como podemos ver, hemos conseguido nuestro objetivo. Por supuesto,
este truco es válido también para completar con espacios en blanco - muy
util para obtener ficheros de ancho fijo - o cualquier otro tipo de
caracter.
Podemos hacer las cosas un poco mejor, y creamos una funcion a la que le pasaremos el número a formatear y el formato de salida.
CREATE FUNCTION dbo.FormatNum
( @number int,
@format varchar(50)
)
RETURNS varchar(50)
AS
BEGIN DECLARE @len int
SET @len = len(@format)
RETURN RIGHT( @format + cast(@number AS varchar), @len)
END
|
Sobre una supuesta tabla Pais, que hemos cargado previamente con
cinco registros - con el código autonumérico - ejecutamos la siguiente
consulta:
SELECT dbo.FormatNum(CodPais,'000000000000') AS CodPais,
NombrePais,
ActivoFROM Pais
|
El resultado de la consulta es el siguiente:
CodPais NombrePais Activo
----------------- -------------- ------
000000000001 Pais 0 0
000000000002 Pais 1 0
000000000003 Pais 2 0
000000000004 Pais 3 0
000000000005 Pais 4 0
No hay comentarios.:
Publicar un comentario