Oracle隨機函數調用
簡單得說
通過dbms_random包調用隨機數的方法大致有
種
dbms_randomnormal
這個函數不帶參數
能返回normal distribution的一個number類型
所以基本上隨機數會在
到
之間
簡單測試了一下
產生
次最大能到
左右
SQL》 declare
i number
=
j number
=
begin
for k in
loop
i
= dbms_random
normal
if i 》 j
then j
=i
end if
end loop
dbms_output
put_line(j)
end
/
PL/SQL procedure successfully completed
dbms_randomrandom
這個也沒有參數
返回一個從
power(
)到power(
)的整數值
dbms_randomvalue
這個函數分為兩種
一種是沒有參數
則直接返回
之間的
位小數
SQL 》 column value format
SQL 》 select dbms_random
value from dual
VALUE
第二種是加上兩個參數a
b
則返回值在a
b之間的
位小數
SQL 》 column value format
SQL 》 select dbms_random
value(
) value from dual
VALUE
注意
無論前面幾位
小數點之後都是
位
dbms_randomstring
這個函數必須帶有兩個參數
前面的字符指定類型
後面的數值指定位數(最大
)
類型說明
u
U
upper case alpha characters only
l
L
lower case alpha characters only
a
A
alpha characters only (mixed case)
x
X
any alpha
numeric characters (upper)
p
P
any printable characters
SQL 》 column value format a
SQL 》 select dbms_random
string(
u
) value from dual
VALUE
VTQNLGISELPXEDBXKUZLXKBAJMUTIA
SQL 》 select dbms_random
string(
l
) value from dual
VALUE
uqygsbquingfqdytpgjvdoblxeglgu
SQL 》 select dbms_random
string(
a
) value from dual
VALUE
NGTGkQypuSWhBfcrHiOlQwOUXkqJjy
SQL 》 select dbms_random
string(
x
) value from dual
VALUE
UVWONYJMXT
VEFPD
WJCJ
QT
BD
SQL 》 select dbms_random
string(
p
) value from dual
VALUE
mak$(WT
M_
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
From:http://tw.wingwit.com/Article/program/Oracle/201311/16934.html