CFSDN nhấn mạnh vào giá trị tạo ra nguồn mở và chúng tôi cam kết xây dựng nền tảng chia sẻ tài nguyên để mọi nhân viên CNTT có thể tìm thấy thế giới tuyệt vời của bạn tại đây.
Bài viết trên blog CFSDN về số ngẫu nhiên Oracle này được tác giả sưu tầm và sắp xếp. Nếu các bạn quan tâm đến bài viết này thì nhớ like nhé.
Sử dụng gói dbms_random của Oracle kết hợp với rownum để đạt được điều này. Ví dụ như sau, chọn ngẫu nhiên 499 hộ gia đình: select * from (chọn * từ busi.t_ar_userinfo theo thứ tự dbms_random.value) trong đó rownum < 500; là: http://www.psoug.org/reference/dbms_random.html Không dùng nữa. Gói tích hợp sẵn DBMS_CRYPTO, việc sử dụng gói này không còn được khuyến khích. Đã đính kèm, giới thiệu một số tham số của dbms_random: hàm trả về giá trị số, trả về một số ngẫu nhiên trong khoảng [0, 1), với độ chính xác là 38 bit (Gets) một số ngẫu nhiên, lớn hơn hoặc bằng 0 và nhỏ hơn 1, có 38 chữ số thập phân) giá trị hàm (SỐ IN thấp, SỐ IN cao) trả về số, trả về một số ngẫu nhiên giữa hàm [thấp, cao) bình thường trả về số, trả về số ngẫu nhiên trong phân phối chuẩn chuẩn, trả về tập hợp số tuân theo phân phối chuẩn, độ lệch chuẩn là 1, giá trị kỳ vọng là 0, 68% giá trị trả về nằm trong khoảng từ +1 đến -1 và 95% nằm trong khoảng từ +2 đến -2, 99% nằm trong khoảng từ +3 đến -3. hàm trả về ngẫu nhiên BINARY_INTEGER, (Tạo giá trị số ngẫu nhiên), chuỗi hàm (opt char, số độ dài) trả về varchar2 (tối đa là 60), trả về một chuỗi có độ dài được chỉ định (Tạo chuỗi ngẫu nhiên), chọn giá trị hạt giống: 'a' , 'MỘT Câu hỏi: Vấn đề của tôi tại nơi làm việc: Người giám sát của tôi yêu cầu tôi chọn ngẫu nhiên một số người dùng email hoặc số điện thoại di động đủ điều kiện cho một sự kiện nhất định để đưa ra thông báo giải thưởng hoặc các tin nhắn khác. Công ty chúng tôi sử dụng Oracle 9i. Làm cách nào để triển khai điều này? Trả lời: Bạn có thể sử dụng PL/SQL để tạo số ngẫu nhiên trong Oracle. Tên tệp thư mục là:/ORACLE_HOME/rdbms/admin/dbmsrand.sql. Trước khi sử dụng, bạn phải biên dịch nó theo người dùng sys: SQL>@/ORACLE_HOME/rdbms/admin/dbmsrand.sql. Nó thực sự tạo ra một gói dbms_random dưới người dùng sys, tạo ra các từ đồng nghĩa công khai và ủy quyền cho tất cả người dùng cơ sở dữ liệu thực thi nó. quyền. Sử dụng gói dbms_random để truy xuất dữ liệu ngẫu nhiên: 1. Đầu tiên, tạo một số thứ tự tăng duy nhất tmp_id, tạo chuỗi tmp_id tăng dần thêm 1, bắt đầu với 1 giá trị lớn nhất 9999999 nocycle nocache 2. Sau đó, tạo một bảng tạm thời tmp_1 để khớp với dữ liệu cho sự kiện này Tất cả các bản ghi; các điều kiện được loại bỏ. tạo bảng tmp_1 dưới dạng chọn tmp_id.nextval dưới dạng id,email,mobileno từ tên bảng trong đó có điều kiện; Tìm số id lớn nhất: chọn max(id) từ tmp_1; Giả sử nó là 5000 3. Đặt hạt giống để tạo số ngẫu nhiên thực thi dbms_random. hạt giống (12345678); hoặc thực thi dbms_random.seed(TO_CHAR(SYSDATE,'MM-DD-YYYY HH24:MI:SS')); 4. Gọi hàm tạo số ngẫu nhiên dbms_random.value để tạo bảng tạm thời tmp_2. Giả sử rằng 200 bảng tạo tmp_2 được chọn ngẫu nhiên như chọn trunc(dbms_random .value(1,5000)) làm id từ tmp_1 trong đó rownum<201; [Giải thích: dbms_random.value(1,5000) là một số ngẫu nhiên trong khoảng từ 1 đến 5000. Sẽ có số thập phân. Hàm trunc làm tròn số ngẫu nhiên để nó có thể tương ứng với trường ID số nguyên của bảng tạm thời. . Lưu ý: Nếu tmp_1 có nhiều bản ghi (hơn 100.000), bạn cũng có thể tìm một bảng có hơn 200 hàng (nếu là tmp_3) để tạo tmp_2 tạo bảng tmp_2 as select trunc(dbms_random.value(1,5000)) as id từ tmp_3 trong đó rownum<201; ] 5. tmp_1 và tmp_2 được liên kết để có được 200 lựa chọn của người dùng đáp ứng các điều kiện t1.mobileno,t1.email từ tmp_1 t1,tmp_2 t2 trong đó t1.id=t2.id; [Lưu ý: Nếu tmp_1 có nhiều bản ghi (hơn 100.000), bạn cần tạo chỉ mục trên trường id. ] Bạn cũng có thể xuất ra tệp văn bản: đặt số trang spool /tmp/200.txt; chọn t1.mobileno,t1.email từ tmp_1 t1,tmp_2 t2 trong đó t1.id=t2.id sắp xếp theo t1.mobileno; spool off ; 6. Sau khi sử dụng, xóa các bảng tạm thời tmp_1, tmp_2 và số sê-ri tmp_id.
Cuối cùng, bài viết về số ngẫu nhiên của Oracle kết thúc tại đây. Nếu bạn muốn biết thêm về số ngẫu nhiên của Oracle, vui lòng tìm kiếm các bài viết về CFSDN hoặc tiếp tục duyệt các bài viết liên quan. Tôi hy vọng bạn sẽ ủng hộ blog của tôi trong tương lai! .
Tôi là một lập trình viên xuất sắc, rất giỏi!