如果需要生成的随机字符串中既有数字又有字母,可以使用MD5将随机数加密,然后再截取。
mysql> select substring(MD5(RAND()),1,6);
+
| substring(MD5(RAND()),1,6) |
+
| 6b63ac |
+
1 row in set (0.03 sec)
假设现在有一个用户表,里面记录了用户名,但是现在有一个为了提需求而提出需求:给用户表增加一个密码列,并给每个用户设置一个随机密码。
mysql> select id,pwd from t_user;
+
| id | pwd |
+
| 1 | NULL |
| 2 | NULL |
| 3 | NULL |
| 4 | NULL |
| 5 | NULL |
| 6 | NULL |
+
6 rows in set (0.00 sec)
mysql> update t_user set pwd = substring(MD5(RAND()),1,6);
Query OK, 6 rows affected (0.00 sec)
Rows matched: 6 Changed: 6 Warnings: 0
mysql> select id,pwd from t_user;
+
| id | pwd |
+
| 1 | 3aaa34 |
| 2 | 7e0ef6 |
| 3 | cc59c1 |
| 4 | f9d2c0 |
| 5 | 0b95b9 |
| 6 | 04ee59 |
+
6 rows in set (0.00 sec)
BEGIN
DECLARE i INT DEFAULT 1;
DECLARE str VARCHAR(26) DEFAULT 'abcdefghijklmnopqrstuvwsyz';
DECLARE startIndex INT DEFAULT 1;#起始索引
DECLARE le
CREATE FUNCTION random_str(n int) RETURNS varchar(255)
begin
declare chars_str varchar(100)
default "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
declare return
drop function if exists rand_str;
delimiter $$
create function rand_str(size int,ran_type int) returns varchar(256) charset 'utf8'
begin
# 定义接收初始化类型
CHAR(FLOOR(65 + RAND() * 26)),
CHAR(FLOOR(65 + RAND() * 26)),
CHAR(FLOOR(65 + RAND() * 26))
) AS random_string;
这个示例将生成一个由三个随机大写字母组成的字符串。每个CHAR函数调用都会生成一个随机的ASCII码,并将其转换为对应的字符。使用CONCAT函数将这三个字符连接在一起,并将结果命名为random_string。
你可以根据需要调整生成随机字符串的长度和字符范围。例如,如果你想生成一个由六个随机小写字母组成的字符串,可以使用以下查询:
```sql
SELECT CONCAT(
CHAR(FLOOR(97 + RAND() * 26)),
CHAR(FLOOR(97 + RAND() * 26)),
CHAR(FLOOR(97 + RAND() * 26)),
CHAR(FLOOR(97 + RAND() * 26)),
CHAR(FLOOR(97 + RAND() * 26)),
CHAR(FLOOR(97 + RAND() * 26))
) AS random_string;