Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Campo numerico con ceros antes del numero

Estas en el tema de Campo numerico con ceros antes del numero en el foro de SQL Server en Foros del Web. Hola, Tengo un campo numerico que se incrementa automaticamente empezando desde 1 (1,2,3,4,5 .....) Me gustaria que el campo sea (001,002,003,004,005 .....). Pero al poner ...
  #1 (permalink)  
Antiguo 20/08/2007, 01:35
Avatar de Laika  
Fecha de Ingreso: octubre-2001
Mensajes: 1.376
Antigüedad: 22 años, 6 meses
Puntos: 0
Campo numerico con ceros antes del numero

Hola,

Tengo un campo numerico que se incrementa automaticamente empezando desde 1 (1,2,3,4,5 .....)

Me gustaria que el campo sea (001,002,003,004,005 .....). Pero al poner los ceros delante del numero me los quita automaticamente.

¿Puede hacerse esto en sql server?
  #2 (permalink)  
Antiguo 20/08/2007, 03:26
Avatar de Mahalo  
Fecha de Ingreso: julio-2004
Ubicación: Mallorca (Illes Balears)
Mensajes: 1.121
Antigüedad: 19 años, 9 meses
Puntos: 12
Re: Campo numerico con ceros antes del numero

Una idea:

SELECT '00' + CAST([numero] AS varchar(11)) AS numero
FROM [tabla]

Lo que ocurre es que esto añadirá dos ceros siempre:
001, 002,..., 0010,..., 00100,...
Y no creo que sea lo que quieres. Así que te recomiendo hacer una función que compruebe cuántas cifras tiene el número que deseas modificar y añadir los ceros necesarios.

Saludos!
  #3 (permalink)  
Antiguo 20/08/2007, 09:10
Avatar de zeusdelolimpo  
Fecha de Ingreso: agosto-2007
Mensajes: 54
Antigüedad: 16 años, 8 meses
Puntos: 0
De acuerdo Re: Campo numerico con ceros antes del numero

Hola Laika; mira no se si te sirva: si el cambias el campo a "char" pordras meter los ceros que nesesites.

salu2
  #4 (permalink)  
Antiguo 20/08/2007, 10:50
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Re: Campo numerico con ceros antes del numero

Mala idea, la informacion debe tener el tipo de campo adecuado para cada operacion, el formateo de dicha informacion se realiza en el front (VB, C#, etc).

Adicionalmente el campo en cuestion es autoincrementable, si se cambia a char se tendria que incorporar el codigo para calcular dicho valor en cada procedimiento de insercion...
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #5 (permalink)  
Antiguo 21/08/2007, 02:01
Avatar de Laika  
Fecha de Ingreso: octubre-2001
Mensajes: 1.376
Antigüedad: 22 años, 6 meses
Puntos: 0
Re: Campo numerico con ceros antes del numero

Por lo que veo lo que hare es dejarlo como esta y desde codigo al mostrarlo en pantalla añadirlo los ceros.

Pensaba que quiza podia guardarse asi como numerico especificando el formato del numero.

Gracias,

Laika.
  #6 (permalink)  
Antiguo 21/08/2007, 03:56
Avatar de Mahalo  
Fecha de Ingreso: julio-2004
Ubicación: Mallorca (Illes Balears)
Mensajes: 1.121
Antigüedad: 19 años, 9 meses
Puntos: 12
Re: Campo numerico con ceros antes del numero

A eso me refería, no debes cambiar el tipo de campo primario autoincrementable. Lo que te pasé era para mostrar los números con ceros delante. Pero vamos, que con código externo a sql igual te es más fácil.

Saludos!
  #7 (permalink)  
Antiguo 21/08/2007, 04:49
Avatar de Mahalo  
Fecha de Ingreso: julio-2004
Ubicación: Mallorca (Illes Balears)
Mensajes: 1.121
Antigüedad: 19 años, 9 meses
Puntos: 12
Re: Campo numerico con ceros antes del numero

SELECT CASE (LEN(id))
WHEN 1 THEN ('00' + CAST(id AS varchar(11)))
WHEN 2 THEN ('0' + CAST(id AS varchar(11)))
WHEN 3 THEN CAST(id AS varchar(11))
END AS numero
FROM tabla

Más saludos!
  #8 (permalink)  
Antiguo 21/08/2007, 06:36
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Re: Campo numerico con ceros antes del numero

Cita:
Iniciado por Laika Ver Mensaje
Por lo que veo lo que hare es dejarlo como esta y desde codigo al mostrarlo en pantalla añadirlo los ceros.

Pensaba que quiza podia guardarse asi como numerico especificando el formato del numero.

Gracias,

Laika.
Si se puede hacer (te anexo el ejemplo), pero te lo regresaria como varchar, es por eso que el formateo de la vista debe definirse en el front.


Código:
Declare @TotalDeNumeros int, @MiCampo int

Set @TotalDeNumeros = 5
Set @MiCampo = 102
select right(replicate('0',@TotalDeNumeros)+ convert(varchar, @MiCampo), @TotalDeNumeros)

Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #9 (permalink)  
Antiguo 21/08/2007, 07:45
Avatar de Mahalo  
Fecha de Ingreso: julio-2004
Ubicación: Mallorca (Illes Balears)
Mensajes: 1.121
Antigüedad: 19 años, 9 meses
Puntos: 12
Re: Campo numerico con ceros antes del numero

Muy buen código. Desconocía replicate. Y bien compinado con right. Seguro que lo tengo en cuenta más de una vez.

Saludos!
  #10 (permalink)  
Antiguo 23/08/2007, 20:24
Avatar de Gabo77  
Fecha de Ingreso: noviembre-2006
Mensajes: 381
Antigüedad: 17 años, 5 meses
Puntos: 6
Re: Campo numerico con ceros antes del numero

si solo serán tres te recomiendo el padding.... se complica menos...


Código:
Select Right('000' + Cast(Valor as varchar), 3)
From MiTabla
Pero en lo personal la respuesta de andres es mas flexible, ya que así como te lo muestro no te anexará ceros despues del número 99, con lo de andres puedes incluso configurar el nivel de relleno que ocuparas

Saludos!
__________________
Hicimos un pacto con Dios... El no desarrolla Sistemas y nosotros no hacemos milagros....
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:55.