记录一个今日遇到之前很少用的函数
1、CONCAT()
用于将两个或多个字符串连接成一个字符串。
CONCAT('用户', i)
这个例子中,将字符串 '用户'
和变量 i
的值连接在一起,生成类似 '用户0'
, '用户1'
等用户名称。
2、FLOOR()
用于将一个数字向下取整到最接近的整数。
SELECT FLOOR(4.7); -- 结果是 4
SELECT FLOOR(-4.7); -- 结果是 -5
FLOOR(RAND() * 2)
这个表达式首先生成一个随机数(RAND()
),然后乘以 2,最后用 FLOOR()
向下取整,结果将是 0 或 1。这个值用于生成性别字段的随机值(通常用 0 和 1 表示)。
3、RAND()
生成一个介于 0 和 1 之间的随机浮点数。
SELECT RAND(); -- 结果可能是 0.123456789(示例)
CONCAT('18', FLOOR(RAND() * (999999999 - 100000000) + 100000000))
这个表达式用来生成一个随机的电话号码。RAND()
生成一个随机浮点数,乘以一个范围(999999999 - 100000000
),然后加上一个最小值(100000000
),最终用 FLOOR()
将结果取整,确保生成的号码在指定的范围内。
总结
CONCAT()
:用于连接多个字符串生成一个新的字符串。FLOOR()
:用于将数字向下取整,舍去小数部分。RAND()
:用于生成一个 0 到 1 之间的随机浮点数。
这些函数在 SQL 查询和数据处理过程中非常有用,特别是在需要生成动态数据或处理数值时。
举个栗子!!!
向用户表里插入100万条不同的数据:
-- 1418错解决方案(创建函数前执行此语句)
set global log_bin_trust_function_creators=true;
-- 插入100万条数据
DELIMITER $$ -- 写函数之前要写的标志
CREATE FUNCTION mock_data() -- 创建mock_data()函数
RETURNS INT -- 返回整数
BEGIN
DECLARE num INT DEFAULT 1000000; -- 设置一个常量num,值为100万
DECLARE i INT DEFAULT 0;
WHILE i < num DO
INSERT INTO app_user(`name`, `email`, `phone`, `gender`, `password`, `age`)
VALUES(CONCAT('用户', i), '24736743@qq.com', CONCAT('18', FLOOR(RAND()*(999999999-100000000)+100000000)),FLOOR(RAND()*2),UUID(), FLOOR(RAND()*100));
SET i = i + 1;
END WHILE;
RETURN i;
END;
-- 执行函数
SELECT mock_data();