InicioArticulos y noticiasBases de datosProgramaciónForosInternetServiciosContratacionEmail
También puedes ver ...
Simular TRUNC en SQL Server
Cómo insertar un fichero .xml en un campo de tipo XML de SQL server 2005 o 2008
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


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

 
sin... por .net
Respuesta recibida el [06/06/2008 02:52:38]
SIN COMENTARIOS...

 
creo que eso mismo se puede ha... por cacuna
Respuesta recibida el [04/09/2008 04:30:25]
creo que eso mismo se puede hacer con una sola línea de código de la siguiente manera select left(replace(str(@num, 10), ' ', '0'), 10) as expresion

 
Sugerencia por Elias
Respuesta recibida el [21/10/2009 11:36:53]
Vacanisimo esta funcion... muy util, aunque seria chevere si le enviara uno como parametro el caracter que se va a repetir y tambien otro parametro con el numero de veces a repetirse... esto con el fin de no enviar el formato tan largo.

 
Malisimo... por Gonzalo
Respuesta recibida el [04/01/2010 01:10:46]
Malisimo


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: 9713 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: 86 | Comentarios: 2 | Archivo: Articulos
02/02/2010 iPad vs Telesketch
Visitas: 791 | Comentarios: 2 | Archivo: Articulos
Categorias: Humor
Visitas: 739 | Comentarios: 3 | Archivo: Articulos
Visitas: 3134 | Comentarios: 2 | Archivo: Articulos
Categorias: C#
Visitas: 14487 | Comentarios: 7 | Archivo: Articulos
Categorias: C#|Seguridad
Visitas: 1474 | Comentarios: 3 | Archivo: Articulos
Visitas: 690 | Comentarios: 2 | Archivo: Articulos
Visitas: 368 | Comentarios: 0 | Archivo: Articulos
Visitas: 2006 | Comentarios: 2 | Archivo: Articulos
Categorias: C#

Útimos temas recibidos en los foros ...
certificado pensiones horizonte por angela patricia rodriguez ... [Actualidad] 135 26/01/2010
pensiones por eduard ... [Visual Basic 6.0] 0 11/03/2010
Manual Visual Studio.NET por Shiko ... [Visual Basic .NET] 41 26/10/2006
cap de setmana genial por ramón ... [Java] 0 11/03/2010
cetificado de pension por RICARDDO RAFAEL SOLANO ORZCO ... [Actualidad] 0 11/03/2010
solicitud de aifiliacion a porvernir por julios ... [Actualidad] 2 11/03/2010
Solicitar el certificado de pensiones de Abelardo Alfonso Serrano Banegas C.C. 18 971 771 de Curumani Cesar por Marta ... [Actualidad] 0 11/03/2010
Solicitud certificado de afiliaciones a pensiones y cesantias proteccion por hz ... [Actualidad] 50 10/02/2010
cerificado fondo horizonte de pensiones y cesantias por carlos fideligno torres herrera ... [Actualidad] 146 18/01/2010
certificado de afiliación de pensiones y cesantias por secre ... [Actualidad] 109 28/01/2010
certificado de fondos de pensiones horizonte por mona ... [Actualidad] 5 03/03/2010
Certificado de afiliacion AFP (PENSIONES) Horizonte por Sandris ... [Actualidad] 68 30/01/2010

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 ...
21/07/2006 Funciones integradas de PL/SQL    forma parte de...Tutorial PL/SQL
09/05/2006 Como leer XML con C#
22/10/2005 Actualización de datos. UPDATE    forma parte de...Tutorial SQL
03/10/2006 Fundamentos de C#    forma parte de...Tutorial C#
05/07/2007 Consultar datos en Transact SQL    forma parte de...Tutorial de Transact SQL
12/01/2006 Introducción a PLSQL    forma parte de...Tutorial PL/SQL
19/10/2006 Llamadas asíncronas    forma parte de...Tutorial C#
14/07/2006 Tablas PL/SQL    forma parte de...Tutorial PL/SQL
22/10/2005 Introducción SQL    forma parte de...Tutorial SQL
18/10/2005 Enviar emails a través de un servidor SMTP autenticado con Java

 

Encuesta
¿A que perfil te adaptas mejor?




[Ver] [Votar]