Trong SQL Server, T-SQL RAND()
chức năng cho phép bạn tạo một số ngẫu nhiên. Cụ thể, nó trả về một giá trị float giả ngẫu nhiên từ 0 đến 1, độc quyền.
Hàm chấp nhận một đối số tùy chọn cung cấp giá trị hạt giống. Đối với bất kỳ giá trị gốc nhất định nào, kết quả sẽ luôn giống nhau.
Cú pháp
Cú pháp như sau:
RAND ( [ seed ] )
Nơi hạt giống là một biểu thức số nguyên (tinyint, smallint hoặc int) cung cấp giá trị hạt giống. Nếu đối số này không được cung cấp, thì SQL Server sẽ chỉ định một hạt giống ngẫu nhiên.
Ví dụ 1 - Không đối số
Dưới đây là một ví dụ cơ bản để chứng minh điều gì sẽ xảy ra khi chúng tôi không đưa ra đối số.
SELECT RAND() Result;
Kết quả:
+--------------------+ | Result | |--------------------| | 0.0354675287734768 | +--------------------+
Kết quả không phải là một hằng số - nó sẽ khác nhau mỗi khi bạn chạy nó.
Dưới đây là một ví dụ về những gì sẽ xảy ra khi chúng tôi chạy nhiều RAND()
chức năng cùng nhau.
SELECT RAND() 'Result 1', RAND() 'Result 2', RAND() 'Result 3';
Kết quả:
+-------------------+------------------+--------------------+ | Result 1 | Result 2 | Result 3 | |-------------------+------------------+--------------------| | 0.999568268427369 | 0.40098746841349 | 0.0606836711764244 | +-------------------+------------------+--------------------+
Ví dụ 2 - Sử dụng Giá trị gốc
Như đã đề cập, bạn có thể chuyển vào một đối số để xác định giá trị hạt giống. Điều này cho phép bạn tác động đến kết quả đầu ra của hàm.
SELECT RAND(8) Result;
Kết quả:
+-------------------+ | Result | |-------------------| | 0.713722424011731 | +-------------------+
Trong trường hợp này, hàm sẽ trả về cùng một giá trị mỗi lần nếu một giá trị đối số bằng nhau được cung cấp. Điều này được chứng minh trong ví dụ sau:
SELECT RAND(8) 'Result 1', RAND(8) 'Result 2', RAND(8) 'Result 3';
Kết quả:
+-------------------+-------------------+-------------------+ | Result 1 | Result 2 | Result 3 | |-------------------+-------------------+-------------------| | 0.713722424011731 | 0.713722424011731 | 0.713722424011731 | +-------------------+-------------------+-------------------+
Chúng tôi đã chạy hàm ba lần. Và bởi vì chúng tôi sử dụng cùng một loại hạt giống mỗi lần, nên tất cả các kết quả đều giống nhau.
Ví dụ 3 - Sử dụng RAND () như một phần của biểu thức
Bạn có thể sử dụng RAND()
hoạt động như một phần của biểu thức.
SELECT RAND()*10 Result;
Kết quả:
+------------------+ | Result | |------------------| | 3.32720913214171 | +------------------+
Ví dụ 4 - Làm tròn Kết quả
Chúng ta cũng có thể loại bỏ phần phân số bằng cách lồng hàm vào bên trong một hàm như FLOOR()
hoặc CEILING()
.
SELECT CEILING(RAND()*10) Result;
Kết quả:
+----------+ | Result | |----------| | 3 | +----------+
Ví dụ 5 - Trả về số nguyên ngẫu nhiên giữa hai số
Bạn cũng có thể chỉ định rằng số ngẫu nhiên phải nằm giữa hai số.
Dưới đây là một ví dụ về việc tạo một số ngẫu nhiên từ 5 đến 10 (bao gồm cả).
SELECT FLOOR(RAND()*(10-5+1)+5) Result;
Kết quả:
+----------+ | Result | |----------| | 9 | +----------+
Hãy chạy cùng một mã nhiều lần để xem các kết quả khác nhau.
SELECT FLOOR(RAND()*(10-5+1)+5) 'Result 1', FLOOR(RAND()*(10-5+1)+5) 'Result 2', FLOOR(RAND()*(10-5+1)+5) 'Result 3';
Kết quả:
+------------+------------+------------+ | Result 1 | Result 2 | Result 3 | |------------+------------+------------| | 10 | 7 | 6 | +------------+------------+------------+