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简单查询,限定查询及排序


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。