串利用Oracle构建随机字符串的方法(oracle生成随机字符)
在使用Oracle时,我们经常会遇到生成随机字符串的需求,可以根据Oracle构建随机字符串。
首先要明确,熟悉数据库的同学都知道,一般不会在数据库中开发产生随机字符串的功能,这是违反最佳实践的。建议此类需求,一般把算法移植到应用来完成,这样就会大大加快响应速度和减少数据库的负担等等。
但也不是无解,只要我们实现了,Oracle构建随机字符串也不是难事。下面我来介绍下Oracle构建随机字符串的实现方法:
1. 利用DBMS_RANDOM库函数生成随机数:
(1)直接使用现成库函数,如:
SELECT DBMS_RANDOM.STRING(‘X’ ,15)as 随机字串FROM dual;
(2)也可以自定义函数实现随机字符串:
CREATE OR REPLACE FUNCTION fs_randomstring(P_LENGTH NUMBER,P_CHARSET VARCHAR2 )RETURN VARCHAR2 AS BEGIN RETURN(SELECT REGEXP_SUBSTR(SYS_CONNECT_BY_PATH(CHR(ROUND(DBMS_RANDOM.VALUE(0,25)+65)), ”), ‘[^,]’, 1 , LEVEL)as 串 FROM DUAL CONNECT BY LEVEL
实例:
selectfs_randomstring(20 ,”)as 随机字符串from dual;
2. 利用XML函数生成随机字串:
SELECT REGEXP_SUBSTR(XMLQUERY(‘transformcopy $i/text()=>ks:random()modesting-chars(26)return dbms_lob.substr($i,1,1)’ passing DBMS_RANDOM.STRING(‘A’, 15 )returning content),'[A-Z]’ , 1, LEVEL)as 随机字符串 FROM DUAL CONNECT BY LEVEL
注:提示信息可以进行调整,具体实现需要根据实际需求。
以上就是利用Oracle构建随机字符串的方法,希望能够给大家提供帮助。由于不推荐将其放在数据库层面,所以还是尽量的将生成的随机数据用在开发层面,减少对数据库的压力。