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

 更新时间:2023年10月18日 16:27:39   作者:WINNER_QIUQIU  
这篇文章主要介绍了mysql中插入随机字符串数据及常见问题说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

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

一、数据表

已知表stringcontent,其中包含字段:

id要求自增长

content  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';

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • MYSQL 浅谈MyISAM 存储引擎

    MYSQL 浅谈MyISAM 存储引擎

    mysql中用的最多存储引擎就是innodb和myisam。做为Mysql的默认存储引擎,myisam值得我们学习一下,以下是我对《高性能MYSQL》书中提到的myisam的理解,请大家多多指教
    2012-04-04
  • MySQL查询和修改auto_increment的方法

    MySQL查询和修改auto_increment的方法

    这篇文章主要介绍了MySQL查询和修改auto_increment的方法,实例分析了select查询auto_increment及ALTER修改auto_increment的技巧,需要的朋友可以参考下
    2015-02-02
  • Mysql关于数据库是否应该使用外键约束详解说明

    Mysql关于数据库是否应该使用外键约束详解说明

    MySQL 外键约束(FOREIGN KEY)是表的一个特殊字段,经常与主键约束一起使用。对于两个具有关联关系的表而言,相关联字段中主键所在的表就是主表,外键所在的表就是从表。外键用来建立主表与从表的关联关系,为两个表的数据建立连接,约束两个表中数据的一致性和完整性
    2021-10-10
  • 解决net start mysql--服务无法启动 服务没有报告任何错误问题

    解决net start mysql--服务无法启动 服务没有报告任何错误问题

    这篇文章主要介绍了解决net start mysql--服务无法启动 服务没有报告任何错误问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • CentOS 6.5下yum安装 MySQL-5.5全过程图文教程

    CentOS 6.5下yum安装 MySQL-5.5全过程图文教程

    在linux安装mysql是一个困难的事情,yum安装一般是安装的mysql5.1,现在经过自己不懈努力终于能用yum安装mysql5.5了。下面通过两种方法给大家介绍CentOS 6.5下yum安装 MySQL-5.5全过程,一起学习吧
    2016-05-05
  • MySQL数据表设计之自动增长的实现

    MySQL数据表设计之自动增长的实现

    本文主要介绍了MySQL数据表设计之自动增长的实现,包括创建数据表时设置自动增长和修改数据表时添加自动增长,具有一定的参考价值,感兴趣的可以了解一下
    2025-03-03
  • MySQL索引失效的14种场景分享

    MySQL索引失效的14种场景分享

    作为一名后端程序员,经常会对慢查询SQL语句进行调优,而SQL语句出现慢查询,很多情况是由于索引失效造成的,本文为大家整理了14种MySQL索引失效的场景,需要的可以参考一下
    2023-05-05
  • MySQL 复制表详解及实例代码

    MySQL 复制表详解及实例代码

    这篇文章主要介绍了MySQL 复制表详解及实例代码的相关资料,需要的朋友可以参考下
    2017-02-02
  • mysql释放表空间的方法示例

    mysql释放表空间的方法示例

    本文主要介绍了mysql释放表空间的方法示例,可以使用OPTIMIZE TABLE命令,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-08-08
  • spark rdd转dataframe 写入mysql的实例讲解

    spark rdd转dataframe 写入mysql的实例讲解

    今天小编就为大家分享一篇spark rdd转dataframe 写入mysql的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06

最新评论