0


MySQL、Oracle 生成随机ID、随机数、随机字符串

目录

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
标签: mysql oracle 数据库

本文转载自: https://blog.csdn.net/weixin_42307069/article/details/135568508
版权归原作者 2019一路前行 所有, 如有侵权,请联系我们删除。

“MySQL、Oracle 生成随机ID、随机数、随机字符串”的评论:

还没有评论