单值函数:针对每一行查询内容给出一个结果
select system from dual;
组函数:把查询的所有行按照某个标准分组,每个组给出一个输出
select system from s_emp;
※ 字符函数
※ 1. lower 将字符串转化为小写
select lower(’HELLO’)from dual;
查询名字为patel的员工信息
select last_name,salary
from s_emp
where lower(last_name)=lower(’patel’);
※ 2. upper 将字符转化成大写
select upper (‘hello’)from dual;(与lower相同用法)
※ 3. initcap 将字符串中单词首字母大写
select initial(‘hEllo’)from dual;
※ 4. concat 字符串拼接,相当于||
select concat(‘hello’,’world’)from dual;
//last_name.first_name
select concat(last_name,concat(‘.’,first_name))
from s_emp;
注意:单值函数可以所以嵌套,但是嵌套之后先执行最里层的再执行外层的
※ 5. substr 对字符串进行截取
两个参数,第二个参数表示从什么位置开始截取
select substr(‘helloworld’,4)from dual;
三个参数,第二个参数表示从什么位置开始,第三个表示截取长度
select subser(‘helloworld’,4,5)from dual;
※ 6. length 获取字符串的长度
select length(‘hello’)from dual;
※ 7. nvl 处理有null的值
nvl(column_name,出现null替换的值)
注意:nvl如果第一个参数是时间列,第二个参数也要写时间
如果第一个参数是字符串,第二个参数也要写字符串
如果第一个参数是数字类型,第二个参数也要写数字类型
表示值的时候时间和字符串必须加单引号
select last_name,nvl(start_data,’01-9月-18‘)
from s_emp;
针对字符串,时间,数字类型
注意:第二个参数和第一个参数类型匹配
※ 数字函数
※ 1. round 表示四舍五入
select round(35.468)from dual;//35 一个参数表示取整,看小数点后一位
select round(35.468,1)from dual;//35.5 两个参数,第二个参数是正数,表示小数点后取几位,看的是取到小数点位的下一位
select round(35.468,-1)from dual;//40
select round(35.468,-2)from dual;//0 两个参数,第二个参数是负数,表示小数点前取几位,向前一位进制
※ 2. trunc 表示截取(同round用法相同)
select trunc(35.468)from dual;//35 一个参数表示取整
select round(35.468,1)from dual;//35.4 两个参数,第二个参数是正数,表示小数点后取几位
select round(35.468,-1)from dual;//30
select round(35.468,-2)from dual;//0 两个参数,第二个参数是负数,表示小数点前取几位
※ 3. mod 表示取余
select mod(1500,200)from dual;//100
※ 日期函数:(sysdate当前时间)
※ 1. months_between(求两个时间相差几个月)
select months_between(’23-9月-18’,’23-8月-18’)from dual;//1(月,不到一个月用小数表示)
※ 2. add_months 给某个时间增加几个月
select add_months(sysdate,6) from dual;
※ 3. next_day 下一个周几(本周)是几号
select next_day(sysdate,’星期五‘)from dual;
select next_day(’23-9月-18’,’星期五‘)from dual;
※ 4. last_day 指定月份的最后一天是几号
select last_day(sysdate)from dual;
※ 5. round 对时间进行四舍五入 (day month year)
a. 按照day截取,看的是星期,从星期四开始都进入下周第一天,小于周四的回到本周的第一天(周末)。
select round(to_date(’04-9月-18’,’dd-Mod-yy’),’day’)from dual;
b. 按照month截取,看的是天数,从16号开始都进入下月第一天,不到16号回到本月第一天。
select round(to_date(’04-9月-18’,’dd-Mod-yy’),’month’)from dual;
c. 按照year截取,看的是月份,从7月开始都进入下一年第一天,不到7月回到本年第一天。
select round(to_date(’04-9月-18’,’dd-Mod-yy’),’year’)from dual;
※ 6. trunc 对时间进行截取 day month year(与round用法相同)
a. 按天截取回到指定时间所在星期的第一天
select trunc(to_date(’04-9月-18’,’dd-Mod-yy’),’day’)from dual;
b. 按月截取回到指定时间所在月份的第一天
select trunc(to_date(’04-9月-18’,’dd-Mod-yy’),’month’)from dual;
c. 按年截取回到指定时间所在年份的第一天
select trunc(to_date(’04-9月-18’,’dd-Mod-yy’),’year’)from dual;
※ 转化函数
※ 1. to_date 将字符串转化为时间
简体中文环境
select to_date(’04-9月-18’,‘dd-Mon-yy’)from dual;
英文环境
select to_date(’04-May-18’,‘dd-Mon-yy’)from dual;
select to_date(’04-09-18’,‘dd-mm-yy’)from dual;
※ 2. to_number将字符串类型的数字转化为数字类型
select to_number(‘2323’)from dual;(不能加非数字的字符串)
※ 3. to_char将数字类型转化为特定格式的字符串
第二个参数规定的是格式
select to_char(‘233.33’,’fm’$999,999.999’)from dual;
fm 去掉前面的空格
$ 表示美元符号
9 表示占位不补位
0 表示占位并补位
, 千分符
. 小数点
L 本地币种,和操作系统语言有关
※ 4. 将时间类型转化为特定格式的字符串
select to_char(sysdate,’’)
from dual;
(第二个参数表示格式)
※ 格式:
1. yyyy 完整的年份
select to_char(sysdate,’yyyy’)
from dual;
2. mm 表示月份
3. d 一个星期的第几天
4. dd 一个月的第几天
5. ddd 一年的第几天
select to_char(sysdate,’d dd ddd’)
from dual;
6. year 英文年份的
7. month 月份
8. ddsp 月中的几号(英文)
9. ddspth 月中的第几号(英文)
10. day 星期几
11. dy 星期几
12. hh 小时(如果显示24进制:hh24)
13. mi 分钟
14. ss 秒
15. am/pm 显示上/下午
注意:时间转化为字符串需要输出特殊字符的时候,双引号引起来
select to_char(sysdate,’mm”of”dd’)
from dual;//09 of 5
※ 千年虫
※ yy格式:
从数据库取出年份拼接当前年份的前两位
※ rr格式: