Busca

Visite também: UnderLinux ·  VivaOLinux ·  LinuxSecurity ·  NoticiasLinux ·  BR-Linux ·  SoftwareLivre.org ·  [mais]   
 



 

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.

Saiba mais e faça sua inscrição

SELECT com ordem aleatória

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!

Recomende este site
Recomendar este artigo

Opinião dos Leitores

erasmo
15 Jun 2008, 19:38
Caro Luiz,

Por gentileza,

Você saberia informar como como usar o LIKE, para fazer uma pesquisa. Eu quero que abra uma janelinha de pergunta. Colocando qualquer parte(por exemplo) de um nome.

_______________________________
| Qual é o nome do Funcionario ?|
|_______________________________|
| |
| eras |
|_______________________________|


eu usava LIKE "[Qual é o nome do Funcionario ?]"

No BrOffice.BASE não funciona.

obrigado,

erasmo
Rodrigo Malatesta
12 Jun 2008, 15:53
Olá Luiz,
eu consegui fazer o teste no MySql, mas não no Postgres. Sabe se há alguma função semelhante no Postgres?
Outra pergunta, qual seria a aplicação prática deste comando?
Desculpe a pergunta, é que sou inciante na área de desenvolvimento.
Parabéns pelo artigo.
Obrigado.
Fabiano Bonin
12 Jun 2008, 13:34
E nas versões anteriores à 2.1, você pode utilizar a biblioteca nativa 'ib_udf', que é instalada junto com o Firebird e tem a função RAND. Basta declará-la antes:

DECLARE EXTERNAL FUNCTION rand
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'IB_UDF_rand' MODULE_NAME 'ib_udf';
Fabiano Bonin
12 Jun 2008, 13:30
Na versão 2.1 do Firebird existe a função nativa RAND(), que pode ser utilizada diretamente.
*Nome:
Email:
Me notifique sobre novos comentários nessa pagina
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script

Artigos Publicados


Para se manter atualizado sobre as novidades desta coluna, consulte sempre o newsfeed RSS

Desenvolverde RSS

Para saber mais sobre RSS, leia o artigo O Padrão RSS - A luz no fim do túnel.