sql >> Database teknologi >  >> RDS >> SQLite

Sådan fungerer SQLite Random()

SQLite random() funktion returnerer et pseudo-tilfældigt heltal mellem -9223372036854775808 og +9223372036854775807.

Et pseudo-tilfældigt tal er et tal, der ser ud til at være tilfældigt, men som ikke er sandt tilfældigt. Et pseudo-tilfældigt tal er ikke sandt tilfældigt, fordi dets værdi blev genereret af et kendt frø. Et pseudo-tilfældigt tal vil dog se ud til at være tilfældigt, hvis brugeren ikke har kendskab til frøet eller algoritmen, der skabte det.

Derfor anses pseudo-tilfældige tal ofte for at være gode nok til mange applikationer.

Eksempel

Her er et eksempel på generering af et pseudo-tilfældigt tal med random() funktion.

SELECT random();

Resultat:

-882536775989953141

Kun positive værdier

Du kan kombinere random() med abs() kun at generere positive værdier.

SELECT abs(random());

I dette tilfælde, hvis random() genererer en negativ værdi, abs() returnerer den absolutte værdi i stedet.

For at demonstrere hvordan abs() virker, her er hvad der sker, hvis jeg sender det (negative) tilfældige tal fra det første eksempel til abs() funktion:

SELECT abs(-882536775989953141);

Resultat:

882536775989953141

Så hvis vi sender random() til abs() , og random() genererer en negativ værdi, abs() returnerer denne værdi som en positiv værdi.

Værdi mellem 0 og 100

Her er et eksempel på generering af et positivt tal mellem 0 og 100.

SELECT abs(random() % 100);

Her er et eksempel på valg af flere tilfældige værdier.

SELECT 
  abs(random() % 100) AS R1,
  abs(random() % 100) AS R2,
  abs(random() % 100) AS R3;

Resultat:

R1          R2          R3        
----------  ----------  ----------
17          79          90        

Returner tilfældige rækker

Du kan bruge random() i en ORDER BY klausul i en databaseforespørgsel for at returnere tilfældige rækker.

Her er et eksempel.

SELECT * FROM Artist 
ORDER BY random() LIMIT 5;

Resultat:

ArtistId    Name                                    
----------  ----------------------------------------
131         Smashing Pumpkins                       
127         Red Hot Chili Peppers                   
169         Black Eyed Peas                         
60          Santana Feat. Dave Matthews             
240         Gustav Mahler                           

Og her er, hvad jeg får, hvis jeg kører det igen:

ArtistId    Name                                    
----------  ----------------------------------------
234         Orchestra of The Age of Enlightenment   
126         Raul Seixas                             
76          Creedence Clearwater Revival            
182         Nega Gizza                              
63          Santana Feat. Lauryn Hill & Cee-Lo      

Hvis du har en stor tabel, vil du måske ændre din forespørgsel til noget som dette:

SELECT * FROM Artist 
WHERE ArtistId IN 
  (SELECT ArtistId FROM Artist ORDER BY random() LIMIT 5);

Resultat:

ArtistId    Name                                    
----------  ----------------------------------------
45          Sandra De Sá                            
105         Men At Work                             
110         Nirvana                                 
205         Chris Cornell                           
267         Göteborgs Symfoniker & Neeme Järvi     

  1. Hvad betyder importfejl:Symbol ikke fundet:_PQencryptPasswordConn, og hvordan retter jeg det?

  2. Logon-triggere i SQL Server

  3. Gruppering registrerer time for time eller dag for dag og udfylder huller med nul eller nul

  4. Parse JSON i TSQL