COALESCE()
语法 说明 COALESCE(value [, value]…) 返回参数列表中的第一个非空值。COALESCE()的参数可以是任何数据类型,且可以有无数个参数,但所有参数的数据类型必须一致。如果传递给COALESCE()的所有值都为空,则返回值就是空。 示例 SQL> select coalesce('', null, '123', ' ', 'yuankun') from dual; COA --- 123 DECODE()
语法 说明 DECODE(base_expr, compare1, value1 [, compare2, value2, … default]) DECODE()函数的功能非常强大,它类似于一系列的嵌套IF…THEN…ELSE语句。base_expr顺次与compare1、compare2等进行比较。如果base_expr与第i个项目相匹配,则第i个value就会被返回,所有的value数据类型必须一致。如果base_expr不与任何compare相匹配,则返回的是default。 每个compare取值都顺次求值。如果找到一个匹配,则剩下的compare就不进行求值了。 示例 SQL> select decode(10, 2*3, '2*3', 20/5, '20/5', 4+6, '4+6', 'no match') from dual; DEC --- 4+6 DUMP()
语法 说明 DUMP(expr [, number_format [, start_position] [, length]]) 返回包含了有关expr的内部表示信息的VARCHAR2类型的数值。 number_format指定了按照以下制式返回数值: 8 八进制表示 10 十进制表示 16 十六进制表示 17 单字符 如果number_format没有被指定的话,则以十进制表示。 如果start_position和length被指定了,则从start_position开始的长为length的字节将被返回。缺省设置是返回整个结果。 示例 SQL> select ename, dump(ename, 17, 2, 5) dump from emp; ENAME DUMP ---------- -------------------------------------------------- SMITH Typ=1 Len=5: M,I,T,H ALLEN Typ=1 Len=5: L,L,E,N WARD Typ=1 Len=4: A,R,D JONES Typ=1 Len=5: O,N,E,S MARTIN Typ=1 Len=6: A,R,T,I,N BLAKE Typ=1 Len=5: L,A,K,E CLARK Typ=1 Len=5: L,A,R,K SCOTT Typ=1 Len=5: C,O,T,T KING Typ=1 Len=4: I,N,G TURNER Typ=1 Len=6: U,R,N,E,R ADAMS Typ=1 Len=5: D,A,M,S GREATEST()
语法 说明 GREATEST(expr1 [, expr2]…) 返回参数列表中值最大的表达式。在进行比较之前,每个表达式都被隐含地转换为expr1所拥有的类型。 示例 LEAST()
语法 说明 LEAST(expr1 [, expr2]) 返回参数列表中值最小的表达式。LEAST()函数的行为和GREATEST()类似,因为在进行比较前,每个表达式都被隐含地转换为expr1所拥有的类型。 示例 NULLIF()
语法 说明 NULLIF(expr1, expr2) NULLIF()函数判断expr1和expr2是否相等,如果相等,就返回NULL,如果不相等,就返回第一个表达式。expr1不能为空。 示例 SQL> select nullif(1, 2), nullif(1, 1) from dual; NULLIF(1,2) NULLIF(1,1) ----------- ----------- 1 NVL()
语法 说明 NVL(expr1, expr2) 判断并返回参数列表中不为空的那个参数。如果expr1是NULL,则返回expr2;否则返回expr1。该函数对于检查并确保查询的结果集中不包含NULL值是十分有用的。 示例 SQL> select nvl('non null value', 7) first, nvl('', 'null value') second from dual; FIRST SECOND -------------- ---------- non null value null value NVL2()
语法 说明 NVL(expr1, expr2, expr3) NVL2()比NVL()函数更进了一步。如果NVL2()中的第一个表达式为非空,就会返回第二个参数;如果值为空,就会返回第三个参数。 示例 SQL> select nvl2(null, 2, 3) nvl2 from dual; NVL2 ---------- 3 UID
语法 说明 示例 UID 返回一个唯一标识当前数据库用户的整数。 USER
语法 说明 示例 USER 返回当前Oracle用户的名字。 VSIZE()
语法 说明 VSIZE(value) 返回value的内部表示的字节数。也可以使用DUMP函数返回此信息。如果value是NULL,则返回值也是NULL。 示例 SQL> select vsize('YuanKun'), vsize('袁昆') from dual; VSIZE('YUANKUN') VSIZE('袁昆') ---------------- ------------- 7 4 返回随机数的函数
Oracle的DBMS_RANDOM包提供了几个产生随机数字、随机字符串的函数和过程,这些函数有时候还是很有用的。
STRING函数
STRING函数返回一个指定长度的随机字符串,它的语法如下:
DBMS_RANDOM.STRING ( opt IN CHAR, len IN NUMBER) RETURN VARCHAR2;
其中,opt参数用于设置返回字符串所包含的内容,它包含如下一些选项:
opt参数可选值 ?u? 或 ?U? ?l? 或 ?L? ?a? 或 ?A? ?x? 或 ?X? ?p? 或 ?P?
len参数用于指定生成的随机字符串的长度。 示例:
SQL> select dbms_random.string('a', 20) from dual;
DBMS_RANDOM.STRING('A',20)
------------------------------------------------------------------------- fwfWqFZavzUADVOEaYAH
SQL> select dbms_random.string('P', 20) from dual;
DBMS_RANDOM.STRING('P',20)
------------------------------------------------------------------------- >`D 1ZTpfyS|&I3+a=)'
返回一串大写字母的组合 返回一串小写字母的组合 返回一串大小写字母的组合 返回一串大写字母和数字的组合 返回一串由任何可印的字母组成的组合 描述 VALUE函数
VALUE函数用于返回一个随机数,随机数的精度值可以达到小数点后38位。VALUE函数有两种用法,第一种用法不带任何参数,它返回一个[0, 1)之间的小数。其语法如下:
DBMS_RANDOM.VALUE RETURN NUMBER; 示例:
SQL> select dbms_random.value() from dual;
DBMS_RANDOM.VALUE() -------------------
VALUE函数的另一种用法提供了两个参数,它们分别表示随机数的取值范围,生成的随机数将会在[下限, 上限)之间。其语法如下: DBMS_RANDOM.VALUE( low IN NUMBER, high IN NUMBER) RETURN NUMBER;
low就表示随机数的下限值,high表示上限值。 示例:
QL> col random for 999999999999999.9999
SQL> select dbms_random.value(0, 100000000000) random from dual;
RANDOM --------------------- 59476976503.2315
.335445543