oracle学习笔记(四)

来源:互联网 发布:java sftp jcraft 编辑:程序博客网 时间:2024/06/06 01:21

1.常用函数

1)字符函数

lower 全部转为小写 select lower('HELLO') from dual; -->hello
upper  全部转为大写 select upper('hello') from dual; HELLO

concat       连接两个字符串 select concat('hello','world') from dual;--> helloworld

initcap       首字母转为大写 select initcap('hello') from dual;--> Hello

substr  在字符串str中从第m个位置开始取n个字符(位置从1开始)select substr('helloworld',2,3) from dual;--> ell

length       求长度 select length('hello')  from dual;--> 5

 instr 从字符串strA中找出str所在的位置(返回第找到的1个,位置从1开始) select instr('hello','ll') from dual;--> 3

lpad  把字符串str补齐到n个长度,不足就在左边加指定字符c 如果str.length>n就取str的前n个字符selectlpad('hell',10,'*') from dual;--> ******hell

rpad   把字符串str补齐到n个长度,不足就在右边加指定字符c;如果str.length>n就取str的前n个字符(也是从前面取)selectrpad('hello',10,'*') from dual; -->hello*****

trim从str的两端去掉字符,要是指定的字符时才去掉,使用方式特殊:
例:trim('a' from 'aaITCASTaa') 结果为 'ITCAST'
trim('C' from 'aaITCASTaa') 结果为 'aaITCASTaa' 注这里是去掉两端的!
注意:前面只能指定一个字符。

replace例:replace('aaITCASTaa', 'a', '=') 结果为 '==ITCAST=='

2)数字函数

round四舍五入,例 round('45.923', 2) 表示保存两位小数,保留的位数可以指定正、零、负数。
trunc 截断,舍掉后面的数,保留的位数可以指定正、零、负数。
mod 求余,如 mod(12, 5) 结果为2

3)日期函数

例:今天 明天 昨天

select  sysdate 今天,sysdate+1 明天,sysdate-1 昨天 from dual;

add_months  select add_months(sysdate,1) -->当前日期再加上一个月
next_day 从某个日期算起,下一个出现该星期几的日期是哪天: select next_day(sysdate,'星期三') from dual;
last_day 当月的最后一天 select last_day(sysdate)-->当前日期的月份的最后一天

round select round(sysdate,'year') from dual;

select round(sysdate,'month') from dual;

select round(sysdate,'day') from dual;

trunc

转换函数:
隐式数据类型转换 与 显式数据类型转换
to_char(date, format)
to_date(string [,format])
to_char(number, format)
to_number(string [,format]) 如: to_number('22') 或 to_number('$22', '$99')
空值处理函数
NVL (expr1, expr2)
可以使用的数据类型有日期、字符、数字
NVL2 (expr1, expr2, expr3)
expr1不为NULL,返回expr2;为NULL,就返回expr3( expr1 != null ? expr2 : expr3 )

条件表达式:

case '' when '' then  '' when '' then ''  else '' end;

select empno,ename,empjob ,sal 原来的工资, (case empjob when 'PRESIDENT' sal+1000 when 'MANAGER' then  sal+800 else sal+400 end)  涨后的工资 from emp;

使用decode函数:

 select empno,ename,empjob,sal 原来的工资,
 (decode(empjob,'PRISIDENT',sal+1000,'MANAGER',sal+800,sal+400)) 涨后的工资
 from emp;


0 0