一、字符函数
1、lower(char) 将字符串转化为小写的格式
2、upper(char) 将字符串转化为大写的格式
3、length(char) 放回字符串的长度
4、substr(char,m,n) 取字符串的子串
5、replace(char1,search_string,replace_string)
6、instr(char1,char2,[ n [,m] ] ) 取子串在字符串的位置
二、数学函数
1、round( n , [ m ] ) 用于执行四舍五入,如果省掉m,则四舍五入到整数,如果m是正数,则四舍五入到小数点的m位后。如果m是负数,则四舍五入到小数点的m位前。
2、trunc( n , [ m ] ) 用于截取数字,如果省去m,就截取小数部分,如果m是正数就截取小数点的m位后,如果m是负数,就截取到小数点的前m位。
3、floor( n ) 返回小于或是等于n的最大整数
4、ceil( n ) 返回大于或是等于n的最小整数
5、mod(m, n) 返回m除n的余数
注:在做oracle测试时可以使用dual表。
例如:
select mod(10,2) from dual;
三、日期函数
默认的日期格式:dd-mon-yy 即 12-7月-78
1、sysdate 返回系统时间
2、add_months( d , n ) d表示起始日期,n为添加月份数,返回添加后的日期
3、last_day( d ) 返回指定日期所在月份的最后一天
四、转化函数
1、to_char( )
yy : 两位数字的年份
yyyy : 四位数字的年份
mm : 两位数字的月份
dd : 两位数字的天
hh24 : 24小时制
hh12 : 12小时制
mi 、ss 分钟、秒
9 : 显示数字,并忽略前面的0
0:显示数字,如位数不足,则用0补齐
. : 在指定位置显示小数点
, : 在指定位置显示逗号
$ : 在数字前加美元
L : 在数字前加本地货币符号
C : 在数字前加国际货币符号
G : 在指定位置显示组分隔符、
D : 在指定位置显示小数点符号.
2、to_date( ) 将字符串转化为date类型的数据
五、系统函数
1、sys_context
terminal : 当前会话客户所对应的终端的标识符
language : 语言
db_name : 当前数据库名称
nls_date_format : 当前会话客户所对应的日期格式
session_user : 当前会话客户所对应的数据库用户名
current_schema : 当前会话客户所对应的默认方案名
host : 返回数据库所在主机的名称
例如:
select sys_context('USERENV','db_name') from dual;
注意:USERENV是固定的,不能改,db_name可以换成其它
六、其它辅助函数
1、DECODE( exp , s1 , r1 , s2 , r2 .. s , r [ , def ] ) 可以把它理解成一个增强型的if else,只不过它并不通过多行语句,而是在一个函数内实现if else的功能。
exp做为初始参数。s做为对比值,相同则返回r,如果s有多个,则持续遍历所有s,直到某个条件为真为止,否则返回默认值def(如果指定了的话),如果没有默认值,并且前面的对比也都没有为真,则返回空。
毫无疑问,decode是个非常重要的函数,在实现行转列等功能时都会用到,需要牢记和熟练使用。
例如:select decode('a2','a1','true1','a2','true2','default') from dual;
2、GREATEST(n1,n2,...n) 返回序列中的最大值
例如:SELECT GREATEST(15,5,75,8) "Greatest" FROM DUAL;
3、LEAST(n1,n2....n) 返回序列中的最小值
例如:SELECT LEAST(15,5,75,8) LEAST FROM DUAL;
4、NULLIF(c1,c2)
Nullif也是个很有意思的函数。逻辑等价于:CASE WHEN c1 = c2 THEN NULL ELSE c1 END
例如:SELECT NULLIF('a','b'),NULLIF('a','a') FROM DUAL;
5、NVL(c1,c2) 逻辑等价于IF c1 is null THEN c2 ELSE c1 END。c1,c2可以是任何类型。如果两者类型不同,则oracle会自动将c2转换为c1的类型。
例如:SELECT NVL(null, '12') FROM DUAL;
6、NVL2(c1,c2,c3) 大家可能都用到nvl,但你用过nvl2吗?如果c1非空则返回c2,如果c1为空则返回c3
例如:select nvl2('a', 'b', 'c') isNull,nvl2(null, 'b', 'c') isNotNull from dual;
7、SYS_CONNECT_BY_PATH(col,c) 该函数只能应用于树状查询。返回通过c1连接的从根到节点的路径。该函数必须与connect by 子句共同使用。
exp做为初始参数。s做为对比值,相同则返回r,如果s有多个,则持续遍历所有s,直到某个条件为真为止,否则返回默认值def(如果指定了的话),如果没有默认值,并且前面的对比也都没有为真,则返回空。
毫无疑问,decode是个非常重要的函数,在实现行转列等功能时都会用到,需要牢记和熟练使用。
例如:select decode('a2','a1','true1','a2','true2','default') from dual;
2、GREATEST(n1,n2,...n) 返回序列中的最大值
例如:SELECT GREATEST(15,5,75,8) "Greatest" FROM DUAL;
3、LEAST(n1,n2....n) 返回序列中的最小值
例如:SELECT LEAST(15,5,75,8) LEAST FROM DUAL;
4、NULLIF(c1,c2)
Nullif也是个很有意思的函数。逻辑等价于:CASE WHEN c1 = c2 THEN NULL ELSE c1 END
例如:SELECT NULLIF('a','b'),NULLIF('a','a') FROM DUAL;
5、NVL(c1,c2) 逻辑等价于IF c1 is null THEN c2 ELSE c1 END。c1,c2可以是任何类型。如果两者类型不同,则oracle会自动将c2转换为c1的类型。
例如:SELECT NVL(null, '12') FROM DUAL;
6、NVL2(c1,c2,c3) 大家可能都用到nvl,但你用过nvl2吗?如果c1非空则返回c2,如果c1为空则返回c3
例如:select nvl2('a', 'b', 'c') isNull,nvl2(null, 'b', 'c') isNotNull from dual;
7、SYS_CONNECT_BY_PATH(col,c) 该函数只能应用于树状查询。返回通过c1连接的从根到节点的路径。该函数必须与connect by 子句共同使用。