a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 108|回复: 1

[综合] Oracle辅导:Oracle随机函数的调用(2)

[复制链接]
发表于 2012-8-4 13:54:49 | 显示全部楼层 |阅读模式
第二种是加上两个参数a、b,则返回值在a、b之间的38位小数   SQL > column value format 999.999999999999999999999999999999999999
& U  [0 ?" c' U/ K- K3 {$ W3 P  SQL > select dbms_random.value(100,500) value from dual;5 W9 f6 c+ [9 x- o/ C) p+ A5 B, H
  VALUE" ?+ L) S5 x  e+ Y- H5 v9 F2 ?) j
  -----------------------------------------  h% o( F6 K6 N+ F
  412.150194612502916808701157054098274240
( y) T# h6 @3 ^$ j, e  w2 E  注意:无论前面几位,小数点之后都是38位
' c7 _9 p& v; ]- m6 k. |5 N  4、dbms_random.string" J3 L/ D- G  C: g0 p& C) W
  这个函数必须带有两个参数,前面的字符指定类型,后面的数值指定位数(最大60)1 d7 d- k$ e# X
  类型说明:
7 ~4 w( D; M7 ~( H/ \, M! z4 _  'u','U' : upper case alpha characters only1 N. D6 Q' C& Y8 {+ S+ e
  'l','L' : lower case alpha characters only
% l" G6 ?$ v$ O  [6 e: u5 [9 \  'a','A' : alpha characters only (mixed case)
- @' u, w6 h$ a  'x','X' : any alpha-numeric characters (upper)
; W& P6 T( A. H. `( c- i0 h  'p','P' : any printable characters4 s& a7 h( Z5 u3 y- ?
  SQL > column value format a30
; Q6 C( z) q0 z& E% M8 J& e  SQL > select dbms_random.string('u',30) value from dual;
  V$ `2 d/ m* {# e0 \  VALUE( Q, {! _0 M% `- r4 A
  VTQNLGISELPXEDBXKUZLXKBAJMUTIA
1 a, F# a# t/ q( \  SQL > select dbms_random.string('l',30) value from dual;
5 h* n  w- P) h) h2 e3 L( X. w* H  VALUE0 s- |  O, f4 {9 ^6 ?" p6 P
  ------------------------------. k, S7 H/ B* l9 l
  uqygsbquingfqdytpgjvdoblxeglgu7 p! w% ~6 w! {1 G. l* f+ B  t+ ^* k
  SQL > select dbms_random.string('a',30) value from dual;6 `1 l! L# r$ C( E7 ^
  VALUE
) _7 [& t* B, W4 ]7 O" W! k1 j- Y, ^% X& ~$ W* N$ F
  ------------------------------
回复

使用道具 举报

 楼主| 发表于 2012-8-4 13:54:50 | 显示全部楼层

Oracle辅导:Oracle随机函数的调用(2)

</p>  NGTGkQypuSWhBfcrHiOlQwOUXkqJjy
1 }2 I1 ]# P* o5 [- C  F  SQL > select dbms_random.string('x',30) value from dual;' V  U* ]" k* S- B) O" G
  VALUE& }/ G9 v; V# `# V
  ------------------------------
3 n' i0 _- x3 y0 s, i  UVWONYJMXT31VEFPD736WJCJ5QT6BD
# r# a  V  K& ^  SQL > select dbms_random.string('p',30) value from dual;
6 G% t: L0 B- h4 o  P  VALUE
8 Z1 B/ o3 B) o  U' z6 e  ------------------------------9 \! C; f7 Q7 ~7 S$ l" c
  :mak$(WT4M_7c/+f[_XUscf$P Zcq{
+ `2 l6 D  |3 H2 R+ H% _' f  5、关于seed
) A; M- j0 o1 {' `# S  可以设置seed来确定随机数的起始点,对于相同的seed而言,随机数的任意一次变化都将是确定的。! |% [7 v9 O: h) K* |- j" o  X0 g
  就是说,如果在某一时刻调用了seed,之后第一次产生的随机数是4,第二次是6,第三次是1,那么当你再次调用相同的seed之后,一次产生的随机数还是4、6、1. K( Q9 V$ K# A3 z
  seed有两种,一种是数值型的,一种是字符型(最大长度2000)的* X2 o2 {  h& c1 t( q
  -- Seed with a binary integer
5 c- A1 D9 P- S$ Q  PROCEDURE seed(val IN BINARY_INTEGER );- H" d: O  X3 s$ c' `
  PRAGMA restrict_references (seed, WNDS );
3 O* g7 \' X, ]  -- Seed with a string (up to length 2000)7 z! `9 J, D( P1 U$ N+ j; y
  PROCEDURE seed(val IN VARCHAR2 );+ N% Z, z) i3 X/ x/ e
  PRAGMA restrict_references (seed, WNDS );
$ j  S% G+ u$ g2 H  6、关于initialize; B0 n' n1 f) Y: Z  U3 Q
  一个integer参数,注释说的很清楚了:" F" a0 T  j( d# Y* \' b
  -- Obsolete, just calls seed(val)
, t/ f( {/ e4 j( w  PROCEDURE initialize(val IN BINARY_INTEGER );
/ T' k# R9 h$ R" w, Z8 f8 }2 T  PRAGMA restrict_references (initialize, WNDS );
* W# ~, R# ]/ p$ D' ~" x  sys_guid()+ Z+ J$ r4 P' f9 s5 W/ M8 o, t
  官方文档的说明如下:
# S& \" T0 @* k$ U8 P, I1 h1 q% {  SYS_GUID generates and returns a globally unique identifier (RAW value) made up of 16 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.& y' s3 S4 e) p% s9 A' V5 K2 K
  简单得说就是,随机生成一个32位的RAW,但是后面的那段经过实验发现不是这么回事,每次生成的字符串都千差万别,不知道为什么。9 n. E( ^/ g- m& m* @/ ^. W3 D
  在具体应用中,除了可以用来插入生成唯一的标识符外,还可以用来取表中的任意一条记录:
( I' @7 c! ?$ Q8 t: D  select * from ( select * from t2 order by sys_guid()) where rownum = 1 ;
+ g" a" P5 J2 S+ I: \! U$ A: q  powershell
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-21 13:21 , Processed in 0.219533 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表