SQLite
 sql >> база данни >  >> RDS >> SQLite

Как работи SQLite Random().

SQLite random() функцията връща псевдослучайно цяло число между -9223372036854775808 и +9223372036854775807.

Псевдослучайно число е число, което изглежда случайно, но не е наистина случайно. Псевдослучайното число не е наистина случайно, защото стойността му е генерирана от известно начало. Псевдослучайно число обаче ще изглежда произволно, ако потребителят няма познания за семето или алгоритъма, който го е създал.

Следователно псевдослучайните числа често се считат за достатъчно добри за много приложения.

Пример

Ето пример за генериране на псевдослучайно число с random() функция.

SELECT random();

Резултат:

-882536775989953141

Само положителни стойности

Можете да комбинирате random() с abs() за генериране само на положителни стойности.

SELECT abs(random());

В този случай, ако random() генерира отрицателна стойност, abs() вместо това ще върне абсолютната стойност.

За да демонстрирате как abs() работи, ето какво се случва, ако предам (отрицателното) произволно число от първия пример на abs() функция:

SELECT abs(-882536775989953141);

Резултат:

882536775989953141

Така че, ако предадем random() към abs() и random() генерира отрицателна стойност, abs() ще върне тази стойност като положителна стойност.

Стойност между 0 и 100

Ето пример за генериране на положително число между 0 и 100.

SELECT abs(random() % 100);

Ето пример за избор на множество произволни стойности.

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

Резултат:

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

Връщане на произволни редове

Можете да използвате random() в ORDER BY клауза на заявка към база данни за връщане на произволни редове.

Ето един пример.

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

Резултат:

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

И ето какво получавам, ако го стартирам отново:

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      

Ако имате голяма таблица, може да искате да модифицирате заявката си до нещо подобно:

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

Резултат:

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Библиотеката на стаята може ли да копира db от папката с активи?

  2. Няма достъп до предварително попълнена база данни на SQLite с помощта на PhoneGap/Cordova в Android

  3. Лека инсталация на WordPress:Как да инсталирате WordPress с SQLite

  4. SQLiteException, използващ WHERE +KEY_Date+='+date+'

  5. Как да разберете, че потребителят присъства в Sqlite база данни с помощта на android?