Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Tạo số ngẫu nhiên 4 chữ số trong MySQL?

Tạo số ngẫu nhiên 4 chữ số trong MySQL

Sử dụng hàm RAND() kết hợp với FLOOR() để sinh số ngẫu nhiên trong khoảng 0-9999 (4 chữ số).

Công thức

FLOOR(RAND() * 10000)

Giải thích: RAND() sinh số thực [0, 1), nhân 10000 cho khoảng [0, 10000), FLOOR() lấy phần nguyên.

Ví dụ minh họa

Tạo bảng DemoTable717:

mysql> CREATE TABLE DemoTable717 (
    UserId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    UserPassword INT
);
Query OK, 0 rows affected (0.81 sec)

Chèn dữ liệu ban đầu:

mysql> INSERT INTO DemoTable717(UserPassword) VALUES(1454343);
Query OK, 1 row affected (0.21 sec)
mysql> INSERT INTO DemoTable717(UserPassword) VALUES(674654);
Query OK, 1 row affected (0.13 sec)
mysql> INSERT INTO DemoTable717(UserPassword) VALUES(989883);
Query OK, 1 row affected (0.15 sec)
mysql> INSERT INTO DemoTable717(UserPassword) VALUES(909983);
Query OK, 1 row affected (0.15 sec)

Xem dữ liệu:

mysql> SELECT * FROM DemoTable717;
+--------+--------------+
| UserId | UserPassword |
+--------+--------------+
| 1      | 1454343      |
| 2      | 674654       |
| 3      | 989883       |
| 4      | 909983       |
+--------+--------------+
4 rows in set (0.00 sec)

Cập nhật cột UserPassword thành số ngẫu nhiên 4 chữ số:

mysql> UPDATE DemoTable717 SET UserPassword = (SELECT FLOOR(RAND() * 10000));
Query OK, 4 rows affected (0.22 sec)
Rows matched: 4  Changed: 4  Warnings: 0

Kiểm tra lại (mỗi lần chạy sẽ ra kết quả khác nhau):

mysql> SELECT * FROM DemoTable717;
+--------+--------------+
| UserId | UserPassword |
+--------+--------------+
| 1      | 4319         |
| 2      | 3902         |
| 3      | 6553         |
| 4      | 1060         |
+--------+--------------+
4 rows in set (0.00 sec)

Các biến thể

Yêu cầuCông thứcKhoảng giá trị
4 chữ số (0000-9999)FLOOR(RAND() * 10000)0 - 9999
4 chữ số (1000-9999)FLOOR(1000 + RAND() * 9000)1000 - 9999
6 chữ số (OTP)FLOOR(RAND() * 1000000)0 - 999999
Số ngẫu nhiên trong khoảng [a, b]FLOOR(a + RAND() * (b - a + 1))a - b

Lưu ý

  • RAND() được gọi riêng cho mỗi hàng khi dùng trong UPDATE
  • Để cố định seed (dùng cho test): RAND(seed_value)
  • MySQL 8.0+: có thể dùng RANDOM_BYTES() cho mục đích bảo mật