É possível no Microsoft SQL Server gerar um valor interno aleatório de Min a Max (3-9 exemplo, 15-99 etc)
Eu sei, posso gerar de 0 a Max, mas como aumentar a borda Min?
Esta consulta gera um valor aleatório de 1 a 6. É necessário alterá-lo de 3 para 6.
SELECT table_name, 1.0 + floor(6 * RAND(convert(varbinary, newid()))) magic_number
FROM information_schema.tables
Adicionado 5 segundos depois :
Pergunta estúpida, desculpe ...
SELECT table_name, 3.0 + floor(4 * RAND(convert(varbinary, newid()))) magic_number
FROM information_schema.tables
sql
sql-server
sql-server-2008
FSou1
fonte
fonte
Respostas:
Isso gera um número aleatório entre 0-9
1 a 6
3 a 6
Dinâmico (baseado no comentário de Eilert Hjelmeseths)
Atualizado com base em comentários:
NEWID
gera string aleatória (para cada linha de retorno)CHECKSUM
pega o valor da string e cria o número%
) divide por esse número e retorna o resto (o que significa que o valor máximo é um a menos do que o número que você usa)ABS
muda os resultados negativos para positivosfonte
ABS(CHECKSUM(NEWID()) % (@max - @min + 1)) + @min
. Alguns testes da minha parte produziram bons resultados. Se for realmente preciso, acho que essa resposta poderia ser ligeiramente melhorada incluindo-a.Vejo que você adicionou uma resposta à sua pergunta no SQL Server 2008, você também pode fazer
Algumas desvantagens deste método são
NEWID()
métodomas apenas pensei em adicioná-lo como outra opção.
fonte
CRYPT_GEN_RANDOM
é realmente destinado a situações em que você precisa de um número pseudoaleatório mais criptograficamente seguro.Você consegue fazer isso:
E isso foi tirado diretamente deste link , eu realmente não sei como dar o devido crédito a esta resposta.
fonte
Bom e simples, do site de Pinal Dave:
http://blog.sqlauthority.com/2007/04/29/sql-server-random-number-generator-script-sql-query/
(Eu fiz uma ligeira alteração em @ Upper- para incluir o número superior, acrescentei 1.)
fonte
Simplesmente:
Você pode alterar e editar este código de acordo com suas necessidades.
fonte
Aqui está a linha de código simples e única
Para isso, use a função SQL Inbuild RAND () .
Aqui está a fórmula para gerar um número aleatório entre dois números (RETURN INT Range)
Aqui, a é o seu primeiro número (mínimo) eb é o segundo número (máximo) no intervalo
Nota: Você também pode usar a função CAST ou CONVERT para obter o número do intervalo INT.
(CAST (RAND () * (25-10) +10 AS INT))
Exemplo:
Aqui está a fórmula para gerar um número aleatório entre dois números (RETURN DECIMAL Range)
Exemplo:
Mais detalhes verifique isto: https://www.techonthenet.com/sql_server/functions/rand.php
fonte
fonte
SELECT ROUND((6 - 3 * 0.16), 0) SELECT ROUND((6 - 3 * 0.17), 0) SELECT ROUND((6 - 3 * 0.5), 0) SELECT ROUND((6 - 3 * 0.51), 0) SELECT ROUND((6 - 3 * 0.83), 0) SELECT ROUND((6 - 3 * 0.84), 0)
Mostra que 16% de mudança para 6, ~ 34% é 5, ~ 34% é 4 e ~ 16% é 3.A resposta de Lamak como uma função:
fonte
Passo a passo
Observe que uma função definida pelo usuário não permite o uso de RAND (). Uma solução alternativa para isso (fonte: http://blog.sqlauthority.com/2012/11/20/sql-server-using-rand-in-user-defined-functions-udf/ ) é criar primeiro uma visualização.
e então criar a função aleatória
fonte
Em geral:
Para sua pergunta:
<=>
fonte