Como minha abordagem para uma consulta de teste na qual trabalhei nesta questão não funcionou, estou tentando outra coisa agora. Existe uma maneira de dizer à random()
função da página para obter apenas números entre 1 e 10?
sql
postgresql
random
KB22
fonte
fonte
trunc()
retorna o mesmo tipo de dados da entrada (conforme declarado no manual). Você precisa converter o resultado para um inteiro:trunc(random() * 20)::int
random()
retornasse um valor <1 que quando multiplicado por 9 seria> = 9 devido à natureza inexata do tipo de precisão dupla ? Na prática, mesmo que fosse possível, seria extremamente improvável, é claro, por causa da precisão de 15 dígitos ou mais.width_bucket(random(), 0, 1, 10)
uma alternativaPara resumir e simplificar um pouco, você pode usar:
E você pode testar isso como mencionado por @ user80168
fonte
ceil(random() * 10)
resultar em 0 - eu ficaria comfloor
.SELECT floor(random() * 10 + 1);
Se você estiver usando o SQL Server, a maneira correta de obter o inteiro é
Onde
fonte
(trunc (aleatório () * 10)% 10) + 1
fonte
A versão correta da resposta de hythlodayr.
A saída de
trunc
deve ser convertida emINTEGER
. Mas isso pode ser feito semtrunc
. Portanto, é simples.Gera uma saída INTEGER no intervalo [1, 10], ou seja, 1 e 10 inclusive.
Para qualquer número (flutuantes), consulte a resposta do usuário80168. ou seja, apenas não converta para
INTEGER
.fonte
Na verdade, não sei se você quer isso.
tente isso
fonte
Este procedimento armazenado insere um número rand em uma tabela. Cuidado, ele insere uma infinidade de números. Pare de executá-lo quando obter números suficientes.
crie uma tabela para o cursor:
IR
Crie uma tabela para conter seus números:
INSERINDO O SCRIPT:
CRIANDO E EXECUTANDO O PROCEDIMENTO:
Encha a sua mesa:
fonte