mysql中插入随机字符串数据及常见问题

插入随机字符串数据可用于大量数据的测试。

一、数据表

已 知 表 s t r i n g c o n t e n t , 其 中 包 含 字 段 : i d 要 求 自 增 长 c o n t e n t    v a r c h a r ( 30 ) 已知表stringcontent,其中包含字段:\\ id 要求自增长\\ content \ \ varchar(30) stringcontentidcontent  varchar(30)

二、实现步骤

1.按要求创建表

DROP TABLE IF EXISTS stringcontent;#防止该表已经存在
CREATE TABLE stringcontent(
	id INT PRIMARY KEY AUTO_INCREMENT,
	content VARCHAR(30)
);

2.创建存储过程

DROP PROCEDURE IF EXISTS myfinal;
DELIMITER $
CREATE PROCEDURE myfinal(IN num INT)
BEGIN
	DECLARE i INT DEFAULT 1;#定义一个循环变量i,表示插入次数
	DECLARE str VARCHAR(26) DEFAULT 'abcdefghijklmnopqrstuvwxyz';	
	DECLARE startIndex INT DEFAULT 1;#代表起始索引
	DECLARE len INT DEFAULT 1;#代表截取的字符的长度
	WHILE i<=num DO
		SET startIndex=FLOOR(RAND()*26+1);#产生一个随机的整数,代表起始索引1~26
		SET len=FLOOR(RAND()*(26-startIndex+1)+1);#产生一个随机的整数,代表截取长度,1~(26-startIndex+1)
		INSERT INTO stringcontent(content) VALUES(SUBSTR(str,startIndex,len));
		SET i=i+1;#循环变量更新
	END WHILE;

END$

3.调用存储过程并显示结果

CALL myfinal(10)$
SELECT * FROM stringcontent$

结果如下:
在这里插入图片描述

三、常见问题

1.字符串长度的声明
个人认为 content 对应类型varchar长度应定义在26以上,通过分析在截取子串时可能出现索引为1,字符串为26的情况。因此在建表时,长度应定义在26以上。本文定义:

content  varchar(30);

2.len会不会为负数
mysql中rand()函数产生的随机数范围为:0~1,因此按上述方式进行定义不会出现负数。
3.为什么结果会出现空值的情况
随机字符串产生的原理是产生随机起始索引和随机长度,根据这两个参数对默认字符串进行截取。因此结果出现空值情况的可能原因是截取到了没有定义的字符,因此在定义字符串默认值时输入字母的长度一定要大于等于可截取字符串的最大长度。本文定义:

DECLARE str VARCHAR(26) DEFAULT 'abcdefghijklmnopqrstuvwxyz';
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值