oracle单行函数
单行函数的语法
Function_name(column|expression, [arg1, arg2, ...])
参数说明:
Function_name
函数名称
column 列名
expression
表达式
arg1,arg2,... 参数
单行函数分类:
-
字符函数:接收字符输入并返回字符或数值
-
数值函数:接受数据输入并返回数值
-
日期函数:对日期型数据进行操作
-
转换函数:从一种数据类型转换为另外一种数据类型
-
通用函数:NVL 函数 DECODE 函数
字符函数
-- lower() 将字符串转化为小写 select ename from emp where lower(ename) like '%a%'; select ename from emp where ename like '%a%'or ename like '%A%'; -- upper() 将字符串转化为大写 select ename from emp where upper(ename) like '%A%'; -- initcap() 将单词的首字母转为大写,其余字母转为小写 select initcap('HELLO WORLD') from dual; select initcap(ename) from emp; -- concat() 将字符串相连 select concat('hello', 'world') from dual; select 'hello'||'world' from dual; -- substr() 字符串截取 select ename, substr(ename, 1, 2), substr(ename, -3, 3) from emp; -- length() 计算长度 select length('abcdef'), length('12345678') from dual; -- replace() 字符串替换 select substr('hello', 3, 2) 取子串, length('hello') 长度, replace('hello', 'l', 'x') from dual; -- chr() 将数字转为其对应的ascii码字符 select chr(65), chr(66) from dual; -- ascii() 将对应的字符转为其ascii码对应的数字 select ascii('A'), ascii('B') from dual;
数值函数
-- round() 四舍五入,默认精确到个位,指定精确到小数点后几位 select round(23.652) from dual; select round(23.652, 1) from dual; select round(23.652, -1) from dual; -- trunc() 截断小数位数,按指定的精度截断小数或整数(不进行四舍五入运算) select trunc(25.46, 1) from dual; select round(25.46, 1) from dual; select trunc(25.46, -1) from dual; select round(25.46, -1) from dual; -- mod() 对一个数取余数 select mod(10, 3) from dual;
日期函数
Oracle中提供了很多与日期操作相关的函数,主要包括加减。
对日期进行加减运算的时候要遵循一些规则
日期-数字=日期
日期+数字=日期
日期-日期=数字 表示两个日期之间相隔的天数
-- 显示10部门雇员进入公司的星期数 select empno, ename, deptno, round((sysdate - hiredate)/7) from emp where deptno = 10; -- Months_between() 返回两个给定日期之间的相隔的月数 -- 查询10部门的雇员工作的月数 select deptno, empno, ename, months_between(sysdate, hiredate) from emp where deptno = 10; select deptno, empno, ename, round(months_between(sysdate, hiredate)) from emp where deptno = 10; -- add_months() 返回给定的日期加上指定的月数后的日期 select empno, ename, hiredate, add_months(hiredate, 5), add_months(hiredate, -1) from emp; -- next_day() 指定日期下一个指定的星期几是哪一天 select sysdate, next_day(sysdate, '星期一') from dual; -- last_day() 求出给定日期所在月的最后一个日期 select last_day(sysdate) from dual; select last_day(to_date('2015-02-13', 'yyyy-mm-dd')) from dual;
转换函数
to_char()在使用的时候要用到格式控制的符,格式控制符不区分大小写字母
年:Y,年份为四位数,故应写成:YYYY或yyyy
月:M,月份为两位数,故应写成:MM或mm
日:D,日为两位数,故应写成:DD或dd
-- to_char() 将数字或日期转化为字符串 -- 对系统的日期格式显示方式进行转换,使其按中国日期习惯显示,即”YYYY-MM-DD” select empno, ename, to_char(hiredate, 'yyyy-mm-dd') from emp; -- fm 去掉个位数的日、月前面的0 select empno, ename, to_char(hiredate, 'fmyyyy-mm-dd') from emp; -- 对入职日期按照年、月、日进行拆分 select empno,ename,to_char(hiredate,'yyyy') year, to_char(hiredate,'mm') month, to_char(hiredate,'dd') day from emp select empno,ename, to_char(hiredate,'yyyy')||'年'||to_char(hiredate,'mm')||'月'||to_char(hiredate,'dd')||'日' from emp -- to_char() 对数字进行格式化 select empno,ename,to_char(sal,'999,999,999') from emp; select empno,ename,to_char(sal,'000,000,000') from emp; select empno,ename,to_char(sal,'$99,999') from emp; -- to_number() 将当前的固定格式的字符串转换为数字 select sal from emp where sal>to_number('$1,250.00','$9,999.99'); select to_number('300') + to_number('400') from dual; -- to_date() 将当前固定格式的字符串转化为日期 -- 查询1981-1-1 以后入职的员工 select ename, hiredate from emp where hiredate >= to_date('1981-1-1', 'yyyy-mm-dd'); select ename, hiredate from emp where hiredate >= date '1981-1-1';
通用函数
decode(),此函数有类似于If...elseif...else 语句,用于对多分支的判断
语法: decode(col/expression,search1,result1[,search2,result2,……][,default])
说明:
Col/expression:为列名或表达式
Search1,search2……searchI:为多种可能出现的条件
Result1,result2……resulti:当满足对应的shearch后为返回值
-- nvl() 对为空值的字段进行处理 -- 求每个雇员的年薪(包括奖金) select empno, ename, (sal+comm)*12 from emp; select empno,ename,sal,nvl(comm,0) new_comm,(sal+nvl(comm,0))*12 incom from emp; -- docode() 分支判断 select decode(2,1,'内容1',2,'内容2',3,'内容3') from dual; select empno 雇员编号,ename 雇员姓名, decode(job,'CLERK','业务员','SALESMAN','销售人员', 'MANAGER','经理','ANALYST','分析师','PRESIDENT','总裁') 工作 from emp
友情链接: oracle简单查询,限定查询及排序
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。