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

Insert numero random en campo nvarchar con formato ceros a la izq

Estas en el tema de Insert numero random en campo nvarchar con formato ceros a la izq en el foro de SQL Server en Foros del Web. Hola que tal, les traigo una consulta sobre un Insert. Resulta que tengo que poblar de registros una base de datos por lo cual necesito ...
  #1 (permalink)  
Antiguo 13/06/2013, 06:40
Avatar de Huasi  
Fecha de Ingreso: mayo-2007
Mensajes: 83
Antigüedad: 17 años, 5 meses
Puntos: 2
Insert numero random en campo nvarchar con formato ceros a la izq

Hola que tal, les traigo una consulta sobre un Insert. Resulta que tengo que poblar de registros una base de datos por lo cual necesito hacer multiples insert para luego realizar algunas pruebas desde el sistema.
Para simplificar, tengo dos campos: Numero1 nvarchar(4), Numero2 nvarchar(8).
Necesito disparar un random que me genere un entero para cada uno de los campos y en caso de que el largo sea menor que complete con ceros a la izquierda, es decir que quede algo como esto:
Numero1: 4624, 0034, 0446, 1831, 0006, 0068
Numero2: 78930581, 00462466, 00000543
Lo que estoy haciendo es:

Código SQL:
Ver original
  1. DECLARE @Fecha datetime = CAST(CAST( getdate() AS INT )-265 * rand( CAST( CAST( newid() AS BINARY(8)) AS INT))AS datetime)
  2. DECLARE @Nro1 INT = 25 * ABS(CAST(CAST(NEWID() AS VARBINARY(1)) AS INT))
  3. DECLARE @Nro2 INT = ABS(CAST(CAST(NEWID() AS VARBINARY(3))
  4. INSERT INTO Table1
  5. (Fecha, Numero1, Numero2...)
  6. SELECT @Fecha, @Nro1, Nro2...)

El insert into select se debe a que hay otros valores que obtengo desde otra tabla pero no lo pongo aquí para simplificar y hacer foco sobre la parte que me esta faltando. La consulta me esta funcionando bien salvo por el formateo de ceros a la izquierda de Numero1 y Numero2, como lo puedo solucionar?
  #2 (permalink)  
Antiguo 13/06/2013, 07:49
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 2 meses
Puntos: 774
Respuesta: Insert numero random en campo nvarchar con formato ceros a la izq

podrias hacer algo como esto:
Código SQL:
Ver original
  1. DECLARE @Fecha datetime = CAST(CAST( getdate() AS INT )-265 * rand( CAST( CAST( newid() AS BINARY(8)) AS INT))AS datetime)
  2. DECLARE @Nro1 INT = 25 * ABS(CAST(CAST(NEWID() AS VARBINARY(1)) AS INT))
  3. DECLARE @new_nro1 VARCHAR(20)
  4. SET @new_nro1=CONVERT(VARCHAR(20),@nro1)
  5. IF LEN(@new_nro1)<6
  6. BEGIN  
  7.     SET @new_nro1=REPLICATE('0',6-LEN(@new_nro1)) + @new_nro1
  8. END
  9. SELECT @Fecha, @new_nro1

Ojo, tienes un valor entero, pero para guardarlo como quieres(0 a la izquierda) debes de guardarlo en formato de cadena porque sql no te guarda un entero con 0 a la izquierda.

declare @numero int
set @numero=0000020
print @numero


saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: campo, campos, funcion, insert, numero, nvarchar, random, registro, select, tabla
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 00:22.