SQLite
 sql >> Teknologi Basis Data >  >> RDS >> SQLite

Bagaimana SQLite Random() Bekerja

SQLite random() fungsi mengembalikan bilangan bulat pseudo-acak antara -9223372036854775808 dan +9223372036854775807.

Bilangan acak semu adalah bilangan yang tampak acak, tetapi tidak benar-benar acak. Angka pseudo-acak tidak benar-benar acak karena nilainya dihasilkan oleh benih yang diketahui. Namun, nomor pseudo-acak akan tampak acak jika pengguna tidak memiliki pengetahuan tentang seed atau algoritme yang membuatnya.

Oleh karena itu, bilangan pseudo-acak sering dianggap cukup baik untuk banyak aplikasi.

Contoh

Berikut adalah contoh menghasilkan angka pseudo-acak dengan random() fungsi.

SELECT random();

Hasil:

-882536775989953141

Hanya Nilai Positif

Anda dapat menggabungkan random() dengan abs() untuk menghasilkan nilai positif saja.

SELECT abs(random());

Dalam hal ini, jika random() menghasilkan nilai negatif, abs() akan mengembalikan nilai absolut sebagai gantinya.

Untuk mendemonstrasikan bagaimana abs() berfungsi, inilah yang terjadi jika saya meneruskan nomor acak (negatif) dari contoh pertama ke abs() fungsi:

SELECT abs(-882536775989953141);

Hasil:

882536775989953141

Jadi jika kita melewati random() ke abs() , dan random() menghasilkan nilai negatif, abs() akan mengembalikan nilai tersebut sebagai nilai positif.

Nilai Antara 0 dan 100

Berikut adalah contoh menghasilkan angka positif antara 0 dan 100.

SELECT abs(random() % 100);

Berikut ini contoh pemilihan beberapa nilai acak.

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

Hasil:

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

Kembalikan Baris Acak

Anda dapat menggunakan random() dalam ORDER BY klausa kueri database untuk mengembalikan baris acak.

Ini contohnya.

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

Hasil:

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

Dan inilah yang saya dapatkan jika saya menjalankannya lagi:

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      

Jika Anda memiliki tabel yang besar, Anda mungkin ingin mengubah kueri Anda menjadi seperti ini:

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

Hasil:

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. Buat Tabel di SQLite

  2. SQLite FULL OUTER JOIN Emulation

  3. Program Android untuk mengonversi database SQLite ke excel

  4. Kunci Asing SQLite

  5. Bagaimana Operator LIKE Bekerja di SQLite