MySQL建立隨機生成電話的儲存函式
1.
CREATE FUNCTION func_generatePhone() RETURNS CHAR(11) CHARSET utf8 DETERMINISTIC
建立一個名為func_generatePhone的函式,返回型別為CHAR(11),字符集為utf8,確定性函式。
2.
DECLARE head VARCHAR(100) DEFAULT '130,156,136,176,131,133';
宣告一個名為head的變數,型別為VARCHAR(100),預設值為'130,156,136,176,131,133'。該變數儲存手機號的前三位數。
3.
DECLARE content CHAR(10) DEFAULT '0123456789';
宣告一個名為content的變數,型別為CHAR(10),預設值為'0123456789'。該變數儲存手機號剩餘的數字部分。
4.
WHILE LOCATE(',', head_array) > 0 DO
SET head_count = head_count + 1;
SET head_array = SUBSTRING(head_array, LOCATE(',', head_array) + 1);
END WHILE;
透過迴圈計算號碼段的數量。每次迴圈,將head_count加1,同時將head_array擷取逗號後的部分,直到找不到逗號為止。
5.
SET head_count = head_count + 1;
SET selected_head = SUBSTRING_INDEX(SUBSTRING_INDEX(head, ',', FLOOR(1 + RAND() * head_count)), ',', -1);
在號碼段陣列中隨機選擇一個號碼段作為手機號的前三位數。首先將號碼段數量加1,然後根據隨機數生成一個索引值,再透過SUBSTRING_INDEX函式獲取對應的號碼段。
6.
SET phone = CONCAT(selected_head, SUBSTRING(content, FLOOR(1 + RAND() * LENGTH(content)), 1));
將選定的號碼段和隨機選擇的一位數字拼接到phone變數中。
7.
WHILE LENGTH(phone) < 11 DO
SET phone = CONCAT(phone, SUBSTRING(content, FLOOR(1 + RAND() * LENGTH(content)), 1));
END WHILE;
透過迴圈生成剩餘的手機號碼位數,直到phone的長度達到11位為止。每次迴圈,將隨機選擇的一位數字拼接到phone變數中。
完整程式碼
DELIMITER //
CREATE FUNCTION func_generatePhone() RETURNS CHAR(11) CHARSET utf8 DETERMINISTIC
BEGIN
DECLARE head VARCHAR(100) DEFAULT '130,156,136,176,131,133';
DECLARE content CHAR(10) DEFAULT '0123456789';
DECLARE phone CHAR(11) DEFAULT '';-- 將號碼段拆分為陣列
DECLARE head_array VARCHAR(100) DEFAULT head;
DECLARE head_count INT DEFAULT 0;
DECLARE selected_head VARCHAR(3);WHILE LOCATE(',', head_array) > 0 DO
SET head_count = head_count + 1;
SET head_array = SUBSTRING(head_array, LOCATE(',', head_array) + 1);
END WHILE;SET head_count = head_count + 1;
SET selected_head = SUBSTRING_INDEX(SUBSTRING_INDEX(head, ',', FLOOR(1 + RAND() * head_count)), ',', -1);-- 隨機選擇一個號碼段作為手機號的前三位數
SET phone = CONCAT(selected_head, SUBSTRING(content, FLOOR(1 + RAND() * LENGTH(content)), 1));-- 生成後續號碼
WHILE LENGTH(phone) < 11 DO
SET phone = CONCAT(phone, SUBSTRING(content, FLOOR(1 + RAND() * LENGTH(content)), 1));
END WHILE;RETURN phone;
END //DELIMITER ;
結果:
相關文章
- MySQL 5.5 建立儲存過程和函式MySql儲存過程函式
- Mysql 的儲存過程和儲存函式MySql儲存過程儲存函式
- MySQL 儲存函式及呼叫MySql儲存函式
- mysql儲存函過程和儲存函式都屬於儲存程式MySql儲存函式
- mysql和orcale的儲存過程和儲存函式MySql儲存過程儲存函式
- 深入mysql建立自定義函式與儲存過程的詳解MySql函式儲存過程
- AS使用Random函式建立隨機數random函式隨機
- MySQL 儲存過程和函式MySql儲存過程函式
- MySQL儲存過程 (即函式)MySql儲存過程函式
- MySQL儲存過程和函式MySql儲存過程函式
- mySql 儲存過程與函式MySql儲存過程函式
- C語言生成隨機數函式的用法C語言隨機函式
- Oracle中生成隨機數的函式(轉載)Oracle隨機函式
- mysql迴圈插入資料、生成隨機數及CONCAT函式MySql隨機函式
- mysql儲存過程基本函式(轉)MySql儲存過程函式
- MySQL入門--儲存過程(PROCEDURE)和儲存函式(FUNCTION)MySql儲存過程儲存函式Function
- 儲存函式儲存函式
- mysql儲存過程procedure、函式function的用法MySql儲存過程函式Function
- mysql生成隨機數MySql隨機
- 函式索引的儲存函式索引
- MySQL入門系列:儲存程式(二)之儲存函式簡介MySql儲存函式
- MySQL自定義函式與儲存過程MySql函式儲存過程
- MySQL4:儲存過程和函式MySql儲存過程函式
- MATLAB中常用的幾種隨機數生成函式Matlab隨機函式
- 儲存過程與儲存函式儲存過程儲存函式
- mysql儲存過程及日期函式實踐MySql儲存過程函式
- 磁阻式隨機儲存器MRAM基本原理隨機
- MySql儲存過程—2、第一個MySql儲存過程的建立MySql儲存過程
- (9)mysql 中的儲存過程和自定義函式MySql儲存過程函式
- php呼叫mysql儲存過程和函式的方法(轉)PHPMySql儲存過程函式
- Oracle 隨機函式Oracle隨機函式
- Oracle隨機函式的取法Oracle隨機函式
- 儲存過程 函式儲存過程函式
- SQL---------儲存函式SQL儲存函式
- MySQL之儲存函式詳細介紹艹籟MySql儲存函式
- MySQL儲存過程的建立和使用MySql儲存過程
- MATLAB生成服從各種分佈的隨機數函式Matlab隨機函式
- (轉)Oracle隨機函式Oracle隨機函式