mysql中插入隨機(jī)字符串?dāng)?shù)據(jù)及常見問題說明
插入隨機(jī)字符串?dāng)?shù)據(jù)可用于大量數(shù)據(jù)的測(cè)試。
一、數(shù)據(jù)表
已知表stringcontent,其中包含字段:
id要求自增長(zhǎng)
content varchar(30)
二、實(shí)現(xiàn)步驟
1.按要求創(chuàng)建表
DROP TABLE IF EXISTS stringcontent;#防止該表已經(jīng)存在 CREATE TABLE stringcontent( id INT PRIMARY KEY AUTO_INCREMENT, content VARCHAR(30) );
2.創(chuàng)建存儲(chǔ)過程
DROP PROCEDURE IF EXISTS myfinal; DELIMITER $ CREATE PROCEDURE myfinal(IN num INT) BEGIN DECLARE i INT DEFAULT 1;#定義一個(gè)循環(huán)變量i,表示插入次數(shù) DECLARE str VARCHAR(26) DEFAULT 'abcdefghijklmnopqrstuvwxyz'; DECLARE startIndex INT DEFAULT 1;#代表起始索引 DECLARE len INT DEFAULT 1;#代表截取的字符的長(zhǎng)度 WHILE i<=num DO SET startIndex=FLOOR(RAND()*26+1);#產(chǎn)生一個(gè)隨機(jī)的整數(shù),代表起始索引1~26 SET len=FLOOR(RAND()*(26-startIndex+1)+1);#產(chǎn)生一個(gè)隨機(jī)的整數(shù),代表截取長(zhǎng)度,1~(26-startIndex+1) INSERT INTO stringcontent(content) VALUES(SUBSTR(str,startIndex,len)); SET i=i+1;#循環(huán)變量更新 END WHILE; END$
3.調(diào)用存儲(chǔ)過程并顯示結(jié)果
CALL myfinal(10)$ SELECT * FROM stringcontent$
結(jié)果如下:

三、常見問題
1.字符串長(zhǎng)度的聲明
個(gè)人認(rèn)為 content 對(duì)應(yīng)類型varchar長(zhǎng)度應(yīng)定義在26以上,通過分析在截取子串時(shí)可能出現(xiàn)索引為1,字符串為26的情況。
因此在建表時(shí),長(zhǎng)度應(yīng)定義在26以上。
本文定義:
content varchar(30);
2.len會(huì)不會(huì)為負(fù)數(shù)
mysql中rand()函數(shù)產(chǎn)生的隨機(jī)數(shù)范圍為:0~1,因此按上述方式進(jìn)行定義不會(huì)出現(xiàn)負(fù)數(shù)。
3.為什么結(jié)果會(huì)出現(xiàn)空值的情況
隨機(jī)字符串產(chǎn)生的原理是產(chǎn)生隨機(jī)起始索引和隨機(jī)長(zhǎng)度,根據(jù)這兩個(gè)參數(shù)對(duì)默認(rèn)字符串進(jìn)行截取。
因此結(jié)果出現(xiàn)空值情況的可能原因是截取到了沒有定義的字符,因此在定義字符串默認(rèn)值時(shí)輸入字母的長(zhǎng)度一定要大于等于可截取字符串的最大長(zhǎng)度。
本文定義:
DECLARE str VARCHAR(26) DEFAULT 'abcdefghijklmnopqrstuvwxyz';
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
MySQL8設(shè)置自動(dòng)創(chuàng)建時(shí)間和自動(dòng)更新時(shí)間的實(shí)現(xiàn)方法
在實(shí)際應(yīng)用中,我們時(shí)常會(huì)需要用到創(chuàng)建時(shí)間和更新時(shí)間這兩個(gè)字段,下面這篇文章主要給大家介紹了關(guān)于MySQL8設(shè)置自動(dòng)創(chuàng)建時(shí)間和自動(dòng)更新時(shí)間的實(shí)現(xiàn)方法,需要的朋友可以參考下2023-03-03
mysql啟用skip-name-resolve模式時(shí)出現(xiàn)Warning的處理辦法
在優(yōu)化MYSQL配置時(shí),加入 skip-name-resolve ,在重新啟動(dòng)MYSQL時(shí)檢查啟動(dòng)日志,發(fā)現(xiàn)有警告信息2012-07-07
MySQL 導(dǎo)出數(shù)據(jù)為csv格式的方法
這篇文章主要介紹了MySQL 導(dǎo)出數(shù)據(jù)為csv格式的方法,需要的朋友可以參考下2015-10-10
MySQL中CONCAT()函數(shù)拼接出現(xiàn)NULL的問題解決
本文主要介紹了MySQL中CONCAT()函數(shù)拼接出現(xiàn)NULL的問題解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03

