Vou editar alguns dados falsos em meu banco de dados. Mas se eu fizer números aleatórios para cada linha e coluna, não será tão aleatório quanto eu quero. O resultado você confere na imagem abaixo.
Aqui está o meu código que eu uso:
WITH x AS
(
SELECT mintwee, mineen, nul, pluseen, plustwee
FROM Topic
)
SELECT mintwee = CAST(RAND()*100 AS INT),
mineen = CAST(RAND()*100 AS INT),
nul = CAST(RAND()*100 AS INT),
pluseen = CAST(RAND()*100 AS INT),
plustwee = CAST(RAND()*100 AS INT)
FROM x
e isto:
WITH x AS
(
SELECT
mintwee = CAST(RAND()*100 AS INT),
mineen = CAST(RAND()*100 AS INT),
nul = CAST(RAND()*100 AS INT),
pluseen = CAST(RAND()*100 AS INT),
plustwee = CAST(RAND()*100 AS INT)
FROM Topic
)
SELECT mintwee, mineen, nul, pluseen, plustwee
FROM x ;
Mas ambos tem o mesmo resultado. Eu sei, devo usar uma UPDATE
declaração, mas isso é apenas para tentar se o resultado for bom. Depois disso, vou usar a UPDATE
declaração.
Eu uso o SQL Server com uma versão Express 2014.
Como não há correlação entre as linhas da tabela e a função RAND, a expressão é avaliada apenas uma vez na consulta.
Um método para gerar valores aleatórios é com a função NEWID(). O exemplo abaixo gera valores inteiros aleatórios entre o intervalo de 0 a 99. O valor do módulo pode ser ajustado para um intervalo diferente e você pode usar esta técnica básica para gerar valores aleatórios para datas, caracteres, etc.
EDITAR:
De acordo com o comentário de Aaron, a expressão pode ser simplificada se você precisar apenas de números inteiros de 32 bits. Exemplos adicionais:
Tente isto:
Usamos essa view para gerar um inteiro aleatório (somente porque o SQL Server simplesmente não nos permite usar
Crypt_Gen_Random()
em uma UDF):Usando essa visão como base, podemos obter qualquer número inteiro aleatório e, em seguida, fazer algumas contas para redimensioná-lo:
Onde a definição de NormalizeBetween é: