目录
1 MySQL 生成随机ID
1.1 生成 唯一的随机ID:UUID()
UUID():是由128位的数字组成的全局唯一标识符。每次都生成一个新的随机数。
它通常以32个十六进制数的形式表示,分为5个部分,以连字符分隔。
UUID的长度是36个字符,包括32个十六进制数字和4个连字符。
UUID的标准格式是由 8-4-4-4-12 个十六进制数字组成的,其中每个部分的长度是固定的。
典型UUID,如:
22e2a70a-b1ce-11ee-84af-00ff25f02c26
参考案例:
SELECT UUID()AS random_id;-- 返回:22e2a70a-b1ce-11ee-84af-00ff25f02c26SELECT LENGTH(UUID());--返回:36
补充:
LENGTH(str) : 返回 字符串长度
1.2 生成随机数:RAND()
1.2.1 RAND():返回一个介于0和1之间的随机浮点数
参考案例:
SELECT RAND()AS random_number;-- 返回:0.005985797388465886
1.2.2 FLOOR(RAND() * 100):返回一个介于0和99之间的随机整数
参考案例:
SELECT FLOOR(RAND()*100)AS random_integer;-- 返回:98SELECT FLOOR(RAND()*1000)AS random_integer;-- 返回:617SELECT FLOOR(RAND()*10000)AS random_integer;-- 返回:2115
FLOOR(RAND() * 10的n次方):返回一个[ 0 到 (10的n次方)-1]之间的随机整数
补充:
FLOOR() :返回不大于给定数值的最大整数。FLOOR(4.8) : 返回 4
CEILING() :返回不小于给定数值的最小整数。CEILING(4.1):返回 5
ROUND():返回一个四舍五入到最接近的整数。
例子 ROUND(4.1):返回 4,ROUND(4.8):返回 5
1.2.3 LPAD(FLOOR(RAND() * 99999999), 8, ‘0’):返回一个8位的随机字符串
LPAD(string, length, pad_string):表示从左边填充字符串。
string:原始字符串
length:填充后的字符串长度
pad_string:用于填充的字符或字符串
如果pad_string未写,LPAD函数将会在原始字符串的左边粘贴空格。
参考案例:
SELECT LPAD(FLOOR(RAND()*999999),8,'0')AS random_string;-- 返回:00794823SELECT LPAD(FLOOR(RAND()*9999999),8,'0')AS random_string;-- 返回:05299041SELECT LPAD(FLOOR(RAND()*99999999),8,'0')AS random_string;-- 返回:26504930
2 Oracle 生成随机ID
2.1 生成 唯一的随机ID:SYS_GUID()
SYS_GUID():这个全局唯一标识符是一个128位的数字,通常以十六进制字符串的形式表示,长度为 32。
参考案例:
SELECT SYS_GUID()FROM DUAL;
但是查出来的是乱码:
原因:SYS_GUID() 返回的结果是一个16字节的二进制值(RAW类型)。
处理方案:
RAWTOHEX():将RAW类型的数据转换为十六进制字符串表示。
SELECT RAWTOHEX(SYS_GUID())FROM DUAL;-- 返回:D1F80DF570DC419DBA36ABF704E73B31 SELECT LENGTH(RAWTOHEX(SYS_GUID()))FROM DUAL;-- 返回:32
LOWER():大写 转成 小写
SELECT LOWER(RAWTOHEX(SYS_GUID()))FROM DUAL;-- 返回:8d8a96f220c2443fba4d29303756be24SELECT LENGTH(LOWER(RAWTOHEX(SYS_GUID())))FROM DUAL;-- 返回:32
补充:
UPPER():小写 转成 大写
SELECT UPPER('string')FROM DUAL;-- 返回:STRING
注意:MySQL、Oracle 的大写转小写、小写转大写 函数是一样的。
2.2 生成随机数
2.2.1 DBMS_RANDOM.VALUE(low, high): 生成一个介于low和high之间的随机数值。
参考案例:
SELECT DBMS_RANDOM.VALUEFROM DUAL;-- 返回:0.70223750257579254042504448365740539856SELECT DBMS_RANDOM.VALUE(1,100)FROM DUAL;-- 返回:51.89475447588778860620040850818551418562SELECT TRUNC(DBMS_RANDOM.VALUE(1,100))FROM dual;-- 返回:85
补充:
TRUNC():将数字的小数部分截去,返回整数。也可以截取字符串类型的数字。
SELECT TRUNC(5555.6666)FROM dual;-- 返回:5555SELECT TRUNC('5555.6666')FROM dual;-- 返回:5555SELECT TRUNC('5555.6666',2)FROM dual;-- 返回:5555.66
2.2.2 DBMS_RANDOM.STRING(format, length): 生成一个指定格式和长度的随机字符串。
format : 格式,length : 长度。
具体格式如下:
‘U’:表示生成包含大写字母的随机字符串
‘L’:表示生成包含小写字母的随机字符串
‘A’、‘a’:表示生成包含大写字母、小写字母的随机字符串
‘X’:表示生成包含大写字母、数字的随机字符串
‘P’:表示生成包含可打印字符的随机字符串
参考案例:
SELECT DBMS_RANDOM.STRING('U',10)FROM DUAL;-- 返回:DBQTMEUFTLSELECT DBMS_RANDOM.STRING('L',10)FROM DUAL;-- 返回:hreclcycetSELECT DBMS_RANDOM.STRING('A',10)FROM DUAL;-- 返回:qOKsvigiLOSELECT DBMS_RANDOM.STRING('a',10)FROM DUAL;-- 返回:UuqsSDrZlJSELECT DBMS_RANDOM.STRING('X',10)FROM DUAL;-- 返回:PMU5MKH557SELECT DBMS_RANDOM.STRING('P',10)FROM DUAL;-- 返回:3:2l6G8!On
版权归原作者 2019一路前行 所有, 如有侵权,请联系我们删除。