Oracle------第三章Single Row Functions
第三章:单值函数
-
哑表:dual,满足select子句的结构
处理函数的返回值select... from dual;
-
单值函数在字符串上的使用
lower:将字符串转化为小写select lower('HELLO World') from dual;
upper:将字符串转化为大写
select upper('HELLO World') from dual;
initcap:每个单词的首字母大写,其他字母小写
select initcap('hello world') from dual;
concat:字符串的连接
select concat('Hello',' gril') from dual;
substr:求子串
select substr('hello world',3,6) from dual; 第一个参数:字符串,母串 第二个参数:子串开始的索引(索引从1开始的) 第三个参数:子串的长度
length:求字符串的长度
select length('hello world') from dual;
练习:查询所有员工的全名(使用first_name,last_name分割),全名以大写的方式显示,并且要求first_name的长度为6,按照全名进行降序排序?
select upper(concat(concat(first_name,','),last_name)) name from s_emp where length(first_name)=6 order by 1 DESC; 或 select upper(concat(first_name,last_name)) name from s_emp where length(first_name)=6 order by 1 DESC;
-
单值函数在数字类型上的使用
round:四舍五入select round(45.67) from dual; select round(45.67,1) from dual; select round(45.67,2) from dual; select round(45.67,0) from dual; select round(45.67,-1) from dual; select round(45.67,-2) from dual; select round(55.67,-2) from dual;
trunc:只舍不取
select trunc(45.67) from dual; select trunc(45.67,1) from dual; select trunc(45.67,2) from dual; select trunc(45.67,0) from dual; select trunc(45.67,-1) from dual; select trunc(45.67,-2) from dual; select trunc(55.67,-2) from dual;
mod:取余
select mod(1500,400) from dual;
-
单值函数在日期类型上的使用
select sysdate from dual;
设置日期显示格式:
alter session set nls_date_language=english; select sysdate from dual;
MONTHS_BETWEEN:两个日期相差的月数
select months_between(sysdate,'18-MAY-18') from dual; select months_between('18-MAY-13',sysdate) from dual;
该函数精确到毫秒级别的。
ADD_MONTHS:一个日期加上一个月数之后的日期select add_months(sysdate,4) from dual;
NEXT_DAY:即将来临的星期几的日期
select next_day(sysdate,'friday') from dual; select next_day(sysdate,6) from dual;
LAST_DAY:一个月的最后一天
select last_day(sysdate) from dual; select last_day('10-MAY-13') from dual;
ROUND:四舍五入
select round(to_date('19-MAY-13'),'MONTH') from dual;
练习:测试对于MONTH的临界时
15舍16入
测试对于YEAR的临界时
6舍7入
TRUNC:只舍不取 -
转换函数
-
to_char():将数字类型或者日期类型转换为字符串类型
1、 将日期类型转换为字符串类型
YYYY:年
MM:月
d:一周第几天
dd:一月第几天
ddd:一年第几天
year:
month:
day:
ddsp:日全拼 几天
ddspth: 第几天
hh:小时
mi:分
ss:秒select to_char(sysdate,'YYYY') from dual; select to_char(sysdate,'mm') from dual; select to_char(sysdate,'d') from dual; select to_char(sysdate,'dd') from dual; select to_char(sysdate,'ddd') from dual; select to_char(sysdate,'DAY day') from dual; select to_char(sysdate,'ddsp') from dual;
练习:显示这种格式:2013-08-19 16:16:30 pm
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss am') from dual;
2、将数字类型转换为字符串类型
select to_char(salary,'fmL000.00') from s_emp;
9:位数不满足定义的位数时,不需要强制补齐
0:位数不满足定义的位数时,需要强制补齐
$:西方的货币符号
L:本地的货币符号
,:分割
.:小数点
fm:去掉前面空格
注意:定义的位数小于实际的长度会显示# -
to_number():将字符串类型转换为数字类型
select to_number('5') from dual;
-
to_date():将字符串类型转换为日期类型
1、如果日期是默认格式select to_date('19-AUG-13') from dual;
2、如果日期不是默认格式,就需要对格式进行说明。
select to_date('2013/08/19', 'yyyy/MM/DD') from dual;