Aprenda inglês em casa
Baixe gratuitamente as duas primeiras aulas
English for Reading and Listening
Receba por email, diariamente, mensagens contendo materiais para leitura e audição, incluindo arquivos no formato MP3 gravados por falantes nativos.
|
Busca |
Aprenda inglês em casa
Baixe gratuitamente as duas primeiras aulas
English for Reading and Listening
Receba por email, diariamente, mensagens contendo materiais para leitura e audição, incluindo arquivos no formato MP3 gravados por falantes nativos.
Por Luiz Paulo de Oliveira Santos
Data de Publicação: 12 de Junho de 2008
Fui questionado em uma lista sobre a extração de registros de um banco MySQL em ordem aleatória, ou seja, ao se executar o SELECT os registros deveriam ser exibidos de maneira aleatória a cada vez que o SELECT fosse executado.
O MySQL implementa internamente a função RAND(), que devolve um número entre 0 e 1.
Exemplo:
- SELECT RAND() RAND() 0.40686841253831
Obteremos um número de ponto flutuante entre 0 e 1.
Caso seja informado para a função um número inteiro ele utilizará o número informado como SEED para a geração dos números aleatórios. Cuidado, pois pode-se prever o resultado quando se informa a seed.
- SELECT RAND(22); RAND(22) 0.65924883136456 - SELECT RAND(22); RAND(22) 0.65924883136456
Para extrairmos registros de maneira aleatória basta incluirmos o RAND() na clausula ORDEY BY.
Exemplo:
SELECT * FROM tabela WHERE IDADE >= 18 ORDER BY RAND();
Obs: Usuários do Firebird SQL também podem utilizar-se dessa facilidade, porém com uma pequena diferença. Para utilizar um recurso similar no Firebird SQL necessitamos implementar uma função que devolva um número entre 0 e 1, ou utilizar uma função pronta. Pode-se encontrar a função F_RAND() na biblioteca FreeAdhocUDF. No site da biblioteca encontra-se o informações de como utilizá-la.
Forte abraço e até a próxima!
![]() Recomendar este artigo |
Para se manter atualizado sobre as novidades desta coluna, consulte sempre o newsfeed RSS
Para saber mais sobre RSS, leia o artigo O Padrão RSS - A luz no fim do túnel.