sql >> Base de Datos >  >> RDS >> Sqlserver

¿Cómo puedo llenar una columna con números aleatorios en SQL? Obtengo el mismo valor en cada fila.

En lugar de rand() , usa newid() , que se vuelve a calcular para cada fila del resultado. La forma habitual es utilizar el módulo de la suma de comprobación. Tenga en cuenta que checksum(newid()) puede producir -2,147,483,648 y causar un desbordamiento de enteros en abs() , por lo que debemos usar el módulo en el valor devuelto de la suma de comprobación antes de convertirlo en un valor absoluto.

UPDATE CattleProds
SET    SheepTherapy = abs(checksum(NewId()) % 10000)
WHERE  SheepTherapy IS NULL

Esto genera un número aleatorio entre 0 y 9999.