InicioArticulos y noticiasBases de datosProgramaciónForosInternetServiciosContratacionEmail
También puedes ver ...
SET IDENTITY_INSERT ON y LinqToSQL
SQL Server 2008
LinQ To SQL - Un ejemplo sencillo
Leer un campo XML de SQL Server 2005 con C#
SQL dinámico en Transact SQL
Cursores en Transact SQL
Triggers en Transact SQL
Funciones en Transact SQL
Procedimientos almacenados en Transact SQL
Transacciones en Transact SQL

Afiliados
La Web del programador
MundoProgramacion


 

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,

Activo

FROM

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

 Saludos, DJK


 Versión para imprimir  Foros de consulta


Añadir comentario ... Para preguntar utiliza los foros
Autor:

Título:


Para preguntar utiliza los foros.



 Versión para imprimir

Formatear números en SQL Server
Autor: Pedro Herrarte Sánchez
Visitas: 2559 Fecha de publicación: 03/06/2008
Pedro Herrarte, es consultor independiente, ofreciendo servicios de consultoría, análisis, desarrollo y formación.

Posee mas de diez años de experiencia trabajando para las principales empresas de España.

Es especialista en tecnologías .NET, entornos Web, bases de datos (SQL Server y ORACLE) e integración de sistemas.

Es experto en desarrollo (C#, ASP.NET, VB.Net, T-SQL, PL/SQL, , ASP, CGI , C, Pro*C, Java, Essbase, Vignette, PowerBuilder y Visual Basic ...) y bases de datos (SQL Server y ORACLE).

Es fundador, diseñador y programador de www.devjoker.com.




Visitas: 302 | Comentarios: 0 | Archivo: Articulos
Categorias: ASP.NET|CSS|ASP.NET
Visitas: 137 | Comentarios: 0 | Archivo: Articulos
Categorias: TFS
Visitas: 101 | Comentarios: 5 | Archivo: Articulos
Categorias: TFS
Visitas: 429 | Comentarios: 4 | Archivo: Articulos
Categorias: Transact-SQL|LinQ
Visitas: 1444 | Comentarios: 6 | Archivo: Articulos
Categorias: Visual Basic .NET|C#|ASP.NET|ASP.NET|Programación|ADO.NET
27/09/2008 Navegando ....
Visitas: 238 | Comentarios: 0 | Archivo: Articulos
Categorias: Humor
Visitas: 611 | Comentarios: 0 | Archivo: Articulos
Categorias: Visual Basic .NET|C#|ASP.NET|ASP.NET|Programación|WCF
Visitas: 2570 | Comentarios: 4 | Archivo: Articulos
Categorias: C#
Visitas: 463 | Comentarios: 0 | Archivo: Articulos
Categorias: JavaScript|ASP.NET
Visitas: 1071 | Comentarios: 0 | Archivo: Articulos
Categorias: Windows XP|Linux|Windows Vista

Útimos temas recibidos en los foros ...
Crystal reports XI Release 2 y asp.net por mvargas ... [ASP.NET] 0 21/11/2008
Enviar un email con C# utilizando .Net FrameWork 2.0 con logo... por Moises ... [ASP.NET] 0 21/11/2008
Enviar un email con C# utilizando .Net FrameWork 2.0 por Moises ... [C#] 0 21/11/2008
Cuestión de BFILE. por Megatron ... [ORACLE] 0 21/11/2008
Enviar email por Dol ... [ASP.NET] 5 21/08/2007
*******PREGUNTA********: por T.S.U.En Informatíca ... [Visual Basic 6.0] 5 17/03/2008
Programar tareas en oracle. por Rodrigo ... [ORACLE] 0 21/11/2008
fechas con datatimepicker por peyin ... [Visual Basic .NET] 3 20/11/2008
agregar datos de un gridview a un textbox por jhors ... [ASP.NET] 3 19/09/2007
Select de sql en c# por Stuart ... [C#] 1 20/11/2008
Manual en Español de SQL Navigator for Oracle por Maira ... [ORACLE] 12 30/03/2008
Como mandar mensaje a Celular por Pako ... [C#] 40 13/03/2007

Access CGI JSP ORACLE UNIX
Actualidad HTML/DHTML/XHTML LINUX PHP Visual Basic .NET
ASP ISAPI MS DOS Power Builder Visual Basic 6.0
ASP.NET Java mySQL SQL WIN 98/NT/2000/XP
C# JavaScript Opinion SQL Server

devjoker  Te recomendamos además ...
19/09/2007 Triggers en Transact SQL    forma parte de...Tutorial de Transact SQL
24/07/2006 SQL Dinamico    forma parte de...Tutorial PL/SQL
02/09/2007 Procedimientos almacenados en Transact SQL    forma parte de...Tutorial de Transact SQL
23/05/2006 Cursores en PL/SQL    forma parte de...Tutorial PL/SQL
22/10/2005 Consultar datos. SELECT    forma parte de...Tutorial SQL
16/07/2008 WCF: compartición de tipos entre referencias a servicios
04/11/2008 Fijar el encabezado de un GridView con ASP.Net y CSS
16/08/2007 Borrar datos en Transact SQL    forma parte de...Tutorial de Transact SQL
22/10/2005 Actualización de datos. UPDATE    forma parte de...Tutorial SQL
13/07/2006 Paquetes en PL/SQL    forma parte de...Tutorial PL/SQL

 

Encuesta
¿A que perfil te adaptas mejor?
[Ver] [Votar]