SQLite
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> SQLite

Cách hoạt động của SQLite Random ()

SQLite random() hàm trả về một số nguyên giả ngẫu nhiên giữa -9223372036854775808 và +9223372036854775807.

Một số giả ngẫu nhiên là một số có vẻ là ngẫu nhiên, nhưng không thực sự là ngẫu nhiên. Một số giả ngẫu nhiên không phải là ngẫu nhiên thực sự vì giá trị của nó được tạo ra bởi một hạt giống đã biết. Tuy nhiên, một số giả ngẫu nhiên sẽ có vẻ là ngẫu nhiên nếu người dùng không có kiến ​​thức về hạt giống hoặc thuật toán đã tạo ra nó.

Do đó, các số giả ngẫu nhiên thường được coi là đủ tốt cho nhiều ứng dụng.

Ví dụ

Dưới đây là một ví dụ về việc tạo một số giả ngẫu nhiên với random() chức năng.

SELECT random();

Kết quả:

-882536775989953141

Chỉ giá trị tích cực

Bạn có thể kết hợp random() với abs() để chỉ tạo ra các giá trị dương.

SELECT abs(random());

Trong trường hợp này, nếu random() tạo giá trị âm, abs() thay vào đó sẽ trả về giá trị tuyệt đối.

Để chứng minh cách abs() hoạt động, đây là điều sẽ xảy ra nếu tôi chuyển số ngẫu nhiên (âm) từ ví dụ đầu tiên sang abs() chức năng:

SELECT abs(-882536775989953141);

Kết quả:

882536775989953141

Vì vậy, nếu chúng ta chuyển random() thành abs()random() tạo giá trị âm, abs() sẽ trả về giá trị đó dưới dạng giá trị dương.

Giá trị Từ 0 đến 100

Dưới đây là một ví dụ về việc tạo một số dương từ 0 đến 100.

SELECT abs(random() % 100);

Dưới đây là một ví dụ về việc chọn nhiều giá trị ngẫu nhiên.

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

Kết quả:

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

Trả về hàng ngẫu nhiên

Bạn có thể sử dụng random() trong một ORDER BY mệnh đề của một truy vấn cơ sở dữ liệu để trả về các hàng ngẫu nhiên.

Đây là một ví dụ.

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

Kết quả:

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

Và đây là những gì tôi nhận được nếu chạy lại:

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      

Nếu bạn có một bảng lớn, bạn có thể muốn sửa đổi truy vấn của mình thành một cái gì đó như sau:

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

Kết quả:

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. lưu trữ dữ liệu trong cơ sở dữ liệu bằng cách sử dụng nút và chỉnh sửa văn bản

  2. ActiveAndroid Điền trước bảng bằng cách sử dụng di chuyển giản đồ

  3. Android ListView:làm thế nào để tránh truy vấn cơ sở dữ liệu trong bindView ()? Cần tìm nạp một đến nhiều dữ liệu mối quan hệ

  4. Sử dụng ContentProvider để xử lý các hoạt động cơ sở dữ liệu có tốt không?

  5. Cập nhật ListView dựa trên ContentProvider được SQLite hỗ trợ