mysql中插入隨機(jī)字符串?dāng)?shù)據(jù)及常見(jiàn)問(wèn)題說(shuō)明
插入隨機(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ǔ)過(guò)程
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ǔ)過(guò)程并顯示結(jié)果
CALL myfinal(10)$ SELECT * FROM stringcontent$
結(jié)果如下:
三、常見(jiàn)問(wèn)題
1.字符串長(zhǎng)度的聲明
個(gè)人認(rèn)為 content 對(duì)應(yīng)類型varchar長(zhǎng)度應(yīng)定義在26以上,通過(guò)分析在截取子串時(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)空值情況的可能原因是截取到了沒(méi)有定義的字符,因此在定義字符串默認(rèn)值時(shí)輸入字母的長(zhǎng)度一定要大于等于可截取字符串的最大長(zhǎng)度。
本文定義:
DECLARE str VARCHAR(26) DEFAULT 'abcdefghijklmnopqrstuvwxyz';
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Mysql關(guān)于數(shù)據(jù)庫(kù)是否應(yīng)該使用外鍵約束詳解說(shuō)明
MySQL 外鍵約束(FOREIGN KEY)是表的一個(gè)特殊字段,經(jīng)常與主鍵約束一起使用。對(duì)于兩個(gè)具有關(guān)聯(lián)關(guān)系的表而言,相關(guān)聯(lián)字段中主鍵所在的表就是主表,外鍵所在的表就是從表。外鍵用來(lái)建立主表與從表的關(guān)聯(lián)關(guān)系,為兩個(gè)表的數(shù)據(jù)建立連接,約束兩個(gè)表中數(shù)據(jù)的一致性和完整性2021-10-10解決net start mysql--服務(wù)無(wú)法啟動(dòng) 服務(wù)沒(méi)有報(bào)告任何錯(cuò)誤問(wèn)題
這篇文章主要介紹了解決net start mysql--服務(wù)無(wú)法啟動(dòng) 服務(wù)沒(méi)有報(bào)告任何錯(cuò)誤問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12CentOS 6.5下yum安裝 MySQL-5.5全過(guò)程圖文教程
在linux安裝mysql是一個(gè)困難的事情,yum安裝一般是安裝的mysql5.1,現(xiàn)在經(jīng)過(guò)自己不懈努力終于能用yum安裝mysql5.5了。下面通過(guò)兩種方法給大家介紹CentOS 6.5下yum安裝 MySQL-5.5全過(guò)程,一起學(xué)習(xí)吧2016-05-05MySQL數(shù)據(jù)表設(shè)計(jì)之自動(dòng)增長(zhǎng)的實(shí)現(xiàn)
本文主要介紹了MySQL數(shù)據(jù)表設(shè)計(jì)之自動(dòng)增長(zhǎng)的實(shí)現(xiàn),包括創(chuàng)建數(shù)據(jù)表時(shí)設(shè)置自動(dòng)增長(zhǎng)和修改數(shù)據(jù)表時(shí)添加自動(dòng)增長(zhǎng),具有一定的參考價(jià)值,感興趣的可以了解一下2025-03-03spark rdd轉(zhuǎn)dataframe 寫入mysql的實(shí)例講解
今天小編就為大家分享一篇spark rdd轉(zhuǎn)dataframe 寫入mysql的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-06-06