oracle中文网站:http://www.oracle.com/technetwork/cn
取大小函数
least(1,2) 返回两者较小的数 greatest (1,2) 返回两者较大的数
select decode(sign(变量1-变量2),-1,变量1,变量2) from dual; --取较小值
sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1
TRUNC截取函数
TRUNC for dates(日期)
Unit
|
Valid format parameters
|
---|---|
Year
|
SYYYY, YYYY, YEAR, SYEAR, YYY, YY, Y
|
ISO Year
|
IYYY, IY, I
|
Quarter
|
Q
|
Month
|
MONTH, MON, MM, RM
|
Week
|
WW
|
IW
|
IW
|
W
|
W
|
Day
|
DDD, DD, J
|
Start day of the week
|
DAY, DY, D
|
Hour
|
HH, HH12, HH24
|
Minute
|
MI
|
编辑本段TRUNC for number(数字)
编辑本段TRUNC在Microsoft Excel 中用法
语法
TRUNC 函数语法参数
说明
示例
rpad替换和截取字符串函数
rpad函数从右边对字符串使用指定的字符进行填充
rpad(string,padded_length,[pad_string])
string 表示:被填充的字符串
padded_length 表示:字符的长度,是返回的字符串的数量,如果这个数量比原字符串的长度要短,rpad函数将会把字符串截取成从左到右的n个字符;
pad_string 是个可选参数,这个字符串是要粘贴到string的右边,如果这个参数未写,lpad函数将会在string的右边粘贴空格。
例如:
rpad('tech', 7); 将返回'tech '
rpad('tech', 2); 将返回'te'
rpad('tech', 8, '0'); 将返回'tech0000'
rpad('tech on the net', 15, 'z'); 将返回 'tech on the net'
rpad('tech on the net', 16, 'z'); 将返回 'tech on the netz'
SQL> select rpad('aa',5)||decode('bbb',null,' ',rpad('bbb',8))||rpad('cccc',12) from dual;
RPAD('AA',5)||DECODE('BBB',NUL
字符串转换成数值型函数
select to_number(rpad('20130902-20130908',8))+1 from Arr_Distribution_Public
字符串截取
substr('20130902-20130908',10,8)
mod求余函数
用ora_hash函数可以对列进行分组:
例:按员工的职务进行分组,理想情况下,相同职务的员工会被分配到同一组里,如果数据值分布不均匀,HASH的结果可能也会不均匀。
- select ora_hash(t.job, 5) hash_val, t.* from emp t order by hash_val
执行结果:
注意:分组序号,从0开始,但不意味着每个组里都会有数据填充
随机数函数
Oracle中生成随机数的函数
在Oracle中的DBMS_RANDOM程序包中封装了一些生成随机数和随机字符串的函数,其中常用的有以下两个:
DBMS_RANDOM.VALUE函数
该函数用来产生一个随机数,有两种用法:
1. 产生一个介于0和1之间(不包含0和1)的38位精度的随机数,语法为:
DBMS_RANDOM.VALUE RETURN NUMBER; |
这种用法不包含参数。
2. 产生一个介于指定范围之内的38位精度的随机数,语法为:
DBMS_RANDOM.VALUE(low IN NUMBER,high IN NUMBER) RETURN NUMBER; |
这种用法包含两参数,参数low用来指定要生成的随机数的下限,参数high指定上限,生成的随机。请注意生成的随机数有可能等于下限,但绝对小于上限,即“low<=随机数<high”。
举个例子: 要产生一个1到100之间的数可以这样写: DBMS_RANDOM.VALUE(1,100)
DBMS_RANDOM.STRING函数
该函数产生一个随机字符串,语法为:
DBMS_RANDOM.STRING (opt IN CHAR,len IN NUMBER) RETURN VARCHAR2; |
参数len指定生成的字符串的长度。
参数opt指定生成的字符串的样式,允许的取值及其表示的含义如下表所示:
取值 | 含义 |
‘u’或’U’ | 返回一个由大写字母组成的字符串 |
‘l’或’L’ | 返回一个由小写字母组成的字符串 |
‘a’或’A’ | 返回一个由大写字母和小写字母组成的字符串 |
‘x’或’X’ | 返回一个由大写字母和数字组成的字符串 |
‘p’或’P’ | 返回一个由任意的可打印字符组成的字符串 |
举个例子: 要产生一个长度为6且只包括大写字母的字符串,可以这样写: DBMS_RANDOM.STRING('U',6)
附转:“伪随机数”和“随机种子”
首先需要声明的是,计算机不会产生绝对随机的随机数,计算机只能产生“伪随机数”。其实绝对随机的随机数只是一种理想的随机数,即使计算机怎样发展,它也不会产生一串绝对随机的随机数。计算机只能生成相对的随机数,即伪随机数。
所谓的随机数发生器都是通过一定的算法对事先选定的随机种子做复杂的运算,用产生的结果来近似 的模拟完全随机数,这种随机数被称作伪随机数。伪随机数是以相同的概率从一组有限的数字中选取的。所选数字并不具有完全的随机性,但是从实用的角度而言, 其随机程度已足够了。伪随机数的选择是从随机种子开始的,所以为了保证每次得到的伪随机数都足够地“随机”,随机种子的选择就显得非常重要。如果随机种子 一样,那么同一个随机数发生器产生的随机数也会一样。一般地,我们使用同系统时间有关的参数作为随机种子。