单行函数分为:字符函数、数字函数、日期函数、转换函数、通用函数。
在oracle中,对字符串进行操作的时候,必须的写完整的sql语句。例如:要将hello装换成大写:
select upper('hello') from emp;
这样显示的结果你就会发现出现了14行,记录查询就会很不方便。所以在oracle中就有一个虚拟的表 dual;
select upper('hello') from dual;
1、字符函数:主要进行字符串的操作。
UPPER(字符串|列):将输入字符串转换成大写返回。
LOWER(字符串|列):将输入的字符串转换成小写返回。
INITCAOP(字符串|列):开头首字母大写。
LENGTH(字符串|列):返回字符串的长度。
REPLACE(字符串|列,'old string','new string'):替换。
SUBSTR(字符串|列,开始点[,结束点]):截取字符串。例:要查询的一个人名的信息:
select * from emp where ename=UPPER('&str');
其中“&”是属于替代变量,即要让你输入的内容。
②将所有的雇员的姓名小写返回
select lower(ename) from emp;
2、数字函数
round(数字|列[,保留小数的位数]);四舍五入
trunc(数字|列[,保留小数的位数]):舍弃制定位置的数字。
mod(数字1,数字2):取模,取余数。
3.日期函数:
取当前日期:
select sysdate from dual;
SYSDATE
-----------
2012/4/17 1
日期+数字:表示若干天后的日期
日期-数字:表示若干天前的日期
日期(大)-日期(小):表示两个日期的相隔的天数。
last_day(日期):求出指定日期的在本月的最后一天
select last_day(sysdate) from dual;
LAST_DAY(SYSDATE)
-----------------
2012/4/30 10:53:0
next_day(日期,星期数):求出下一个指定星期x的日期;
select next_day(sysdate,'星期一') 下周一的日期 from dual;
NEXT_DAY(SYSDATE,'星期一')
--------------------------
2012/4/23 10:55:39
add_months(日期,数字):求出若干月之后的日期
select add_months(sysdate,4) from dual;
ADD_MONTHS(SYSDATE,4)
---------------------
2012/8/17 10:57:31
months_between(日期1,日期2):求出两个日期之间相隔的月数。
select months_between(sysdate,hiredate) from emp;
4、转换函数
转换函数是将 数字(number)、字符串(varchar2)、日期(date) 之间互相转换。
to_char(字符串|列,格式字符串):将日期转化成要求的格式返回
select to_char(sysdate,'yyyy-MM-dd') 日期 from dual;
日期
----------
2012-04-17
想将数字前面的0去掉的话,可以加一个‘fm’:
select to_char(sysdate,'fmyyyy-MM-dd') 日期 from dual;
日期
----------
2012-4-17
to_char()也可以格式化数字:例如将9832874293647格式化成9,832,874,293,647的形式。
select to_char(9832874293647,'9,999,999,999,999') from dual;
其中9表示的一位数字
to_date(字符串|列,格式字符串):将字符串转化成要求的格式日期返回
select to_date('20120909','yyyy-mm-dd') from dual;
TO_DATE('20120909','YYYY-MM-DD
------------------------------
2012/9/9
to_number(字符串):转化成数字。
select to_number('3')+to_number('3') from dual;
这个加法运算下边也可以实现:
select '3'+'3' from dual;
5、通用函数
nvl():处理null,将空转化成0
select ename,sal,comm,(sal+nvl(comm,0))*12 from emp;
decode():多条件多数值判断。
decode(数值|列,判断值1,显示值1,判断值2,显示值2,判断值3,显示值3...)
这些都是成对出现的。例如:我们将雇员中所有人的职位信息转化成中文
select ename,decode(job,'SALESMAN','销售员','CLERK','办事员','MANAGER','经理','ANALYST','分析员','PRESIDENT','主席') from emp;