Oracle随机函数调用
简单得说
通过dbms_random包调用随机数的方法大致有
种
dbms_randomnormal这个函数不带参数能返回normal distribution的一个number类型所以基本上随机数会在到之间
简单测试了一下产生次最大能到左右
SQL》 declare
i number=
j number=
begin
for k in loop
i= dbms_randomnormal
if i 》 j
then j=i
end if
end loop
dbms_outputput_line(j)
end
/
PL/SQL procedure successfully completed
dbms_randomrandom这个也没有参数返回一个从power()到power()的整数值
dbms_randomvalue这个函数分为两种一种是没有参数则直接返回之间的位小数
SQL 》 column value format
SQL 》 select dbms_randomvalue from dual
VALUE
第二种是加上两个参数ab则返回值在ab之间的位小数
SQL 》 column value format
SQL 》 select dbms_randomvalue() value from dual
VALUE
注意无论前面几位小数点之后都是位
dbms_randomstring这个函数必须带有两个参数前面的字符指定类型后面的数值指定位数(最大)
类型说明
uU upper case alpha characters only
lL lower case alpha characters only
aA alpha characters only (mixed case)
xX any alphanumeric characters (upper)
pP any printable characters
SQL 》 column value format a
SQL 》 select dbms_randomstring(u) value from dual
VALUE
VTQNLGISELPXEDBXKUZLXKBAJMUTIA
SQL 》 select dbms_randomstring(l) value from dual
VALUE
uqygsbquingfqdytpgjvdoblxeglgu
SQL 》 select dbms_randomstring(a) value from dual
VALUE
NGTGkQypuSWhBfcrHiOlQwOUXkqJjy
SQL 》 select dbms_randomstring(x) value from dual
VALUE
UVWONYJMXTVEFPDWJCJQTBD
SQL 》 select dbms_randomstring(p) value from dual
VALUE
mak$(WTM_c/+f[_XUscf$P Zcq{
关于seed可以设置seed来确定随机数的起始点对于相同的seed而言随机数的任意一次变化都将是确定的
就是说如果在某一时刻调用了seed之后第一次产生的随机数是第二次是第三次是那么当你再次调用相同的seed之后一次产生的随机数还是
seed有两种一种是数值型的一种是字符型(最大长度)的
—— Seed with a binary integer
PROCEDURE seed(val IN BINARY_INTEGER )
PRAGMA restrict_references (seed WNDS )
—— Seed with a string (up to length )
PROCEDURE seed(val IN VARCHAR )
PRAGMA restrict_references (seed WNDS )
关于initialize一个integer参数注释说的很清楚了
—— Obsolete just calls seed(val)
PROCEDURE initialize(val IN BINARY_INTEGER )
PRAGMA restrict_references (initialize WNDS )
sys_guid()
官方文档的说明如下
SYS_GUID generates and returns a globally unique identifier (RAW value) made up of bytes On most platforms the generated identifier consists of a host identifier a process or thread identifier of the process or thread invoking the function and a nonrepeating value (sequence of bytes) for that process or thread
简单得说就是随机生成一个位的RAW但是后面的那段经过实验发现不是这么回事每次生成的字符串都千差万别不知道为什么
在具体应用中除了可以用来插入生成唯一的标识符外还可以用来取表中的任意一条记录
select * from ( select * from t order by sys_guid()) where rownum =
powershell