最近在進行MySQL優化的學習,過程中需要造各種不同類型的數據。目前需要使用到隨機手機號以及隨機時間的方法,網查查的都不算好用,現依靠網上提供的幾種方案整理如下:
生成隨機手機號
我國使用的手機號碼爲11位,其中每段編碼代表含義不同:
前3位:網絡識別號(運營商代碼)
4到7位:歸屬地區代碼
8到11位:用戶代碼
如有特必須要更改對應的head、content部分即可。
CREATE FUNCTION `generatePhone`() RETURNS char(11) CHARSET utf8
DETERMINISTIC
BEGIN
DECLARE head VARCHAR(100) DEFAULT '000,156,136,176,183';
DECLARE content CHAR(10) DEFAULT '0123456789';
DECLARE phone CHAR(11) DEFAULT substring(head, 1+(FLOOR(1 + (RAND() * 3))*4), 3);
DECLARE i int DEFAULT 1;
DECLARE len int DEFAULT LENGTH(content);
WHILE i<9 DO
SET i=i+1;
SET phone = CONCAT(phone, substring(content, floor(1 + RAND() * len), 1));
END WHILE;
RETURN phone;
END
測試結果
生成隨機日期
下面代碼是生成1990-01-01到2019-01-01之間的隨機時間,如果需要請修改你要用的時間間隔即可。
SELECT
CONCAT(
(
SELECT
DATE(
FROM_UNIXTIME(
UNIX_TIMESTAMP('1990-01-01') + FLOOR(
RAND() * (
UNIX_TIMESTAMP('2019-01-01') - UNIX_TIMESTAMP('1990-01-01') + 1
)
)
)
) AS DATE
),
' ',
FLOOR(8 + RAND() * 10),
':',
FLOOR(10 + RAND() * 49),
':',
FLOOR(10 + RAND() * 49)
)
FROM
DUAL
測試結果