单值函数:
可以操作数据项,
接收参数,返回值
修改数据类型
嵌套
语法
-
字符类型:
lower:字符转换成小写。 select lower(last_name) from s_emp; upper:字符转成大写。 select upper(last_name) from s_emp; initcap:首字母大写。 select initcap(lower(last_name)) from s_emp; concat:拼接字符串。【最多两个参数,多参数须嵌套】 select concat(first_name,last_name) from s_emp; select concat(concat(first_name,'.'),last_name) from s_emp; substr:截取字符串。【正数从前往后,负数从后往前】 select last_name,substr(last_name,3) string from s_emp; 参数:【字符串,开始位置,截取长度】 select last_name,substr(last_name,3,2) string from s_emp; length:返回字符串的长度。 select last_name,length(last_name) length from s_emp order by 2; nvl:替换空值 select last_name,nvl(commission_pct,0) from s_emp; dual:哑表,sys用户下的,默认已授权,其他用户可以直接使用,一般用于构成完整的select查询语法;
-
数字类型:
round:四舍五入【负数小数点前,正数小数点后】 round(数值,保留位数) select round(45.923,2) from dual; trunc:直接截取 select trunc(45.923,2) from dual; mod:取余数 select mod(10,3) from dual;
-
日期类型:
默认日期格式: DD-mon-yy '06-9月-19' '06-sep-19'月份前三个字母缩写,由系统环境决定中英文 sysdate:系统当前时间【默认日期格式,包含时分秒;可以加减运算,单位是天】 select sysdate from dual; months_between:两个日期之间相差多少个月 select months_between(sysdate+100,sysdate) from dual; add_months:将日期时间点,按月往后推(正数往后推,负数往前推) select add_months(sysdate,2) from dual;玩后推 select add_months(sysdate,-2) from dual;玩前推 next_day:返回一个日期数据:表示一个时间点后的下一个星期几在哪一天 select next_day(sysdate,'星期五') from dual; 注意:如果要使用'FRIDAY',那么需要把当前会话的语言环境修改为英文 last_day:返回一个日期数据:表示一个日期所在月份的最后一天 select last_day(sysdate) from dual; round:对日期进四舍五入,返回操作后的日期数据 例如: 把当前日期四舍五入到月 select round(sysdate,'MONTH') from dual; select round(sysdate,'DAY') from dual; 测试:15号16号分别是舍弃还是进位 select round(sysdate-8,'MONTH') from dual; 15舍16进 把当前日期四舍五入到年 select round(sysdate,'YEAR') from dual; //这个写法是错误的 //数字函数也有一个round //俩个ronnd函数有冲突 //所以这里不能使用默认的日期格式 select round('01-2月-2019','MONTH') from dual; trunc:对日期进行截取 和round类似,但是只舍弃不进位 select trunc(sysdate,'year') from dual;
-
转换类型:
to_char:转字符
to_char(日期,格式) select to_char(sysdate,'yyyy') from dual; 日期格式: yyyy:四位数的年份 rrrr:四位数的年份 yy:两位数的年份 rr:两位数的年份 mm:两位数的月份(数字) D:一周的星期几 DD:一月的第几天 DDD :一年的第几天 YEAR:英文的年份 MONTH:英文全称的月份 mon:英文简写的月份 ddsp:英文的第几天(一个月的) ddspth:英文序列数的第几天(一个月的) DAY:全英文的星期 DY:简写的英文星期 hh:小时 mi:分钟 ss:秒 例如: 测试常见的一些日期数据转换为字符串的格式 select to_char(sysdate,'yyyy MM D DD DDD YEAR MONTH ddsp ddspth DAY DY') from dual; select to_char(sysdate,'dd-mm-yy') from dual; select to_char(sysdate,'yy-mm-dd') from dual; select to_char(sysdate,'dd-mm-yy HH24:MI:SS AM') from dual; to_char(数字,格式) 例如: select to_char(salary,'$999,999.00') from s_emp; fm表示去除结果显示中的开始的空格 select to_char(salary,'fm$999,999.00') from s_emp; L表示系统本地的货币符号 select to_char(salary,'fmL999,999.00') from s_emp;
to_number:转数字
to_number(数字型字符) 例如: select to_number('1000') from dual; //这个写法是错的 abc不能转换为数字 select to_number('abc') from dual;
to_date:转日期
to_date(日期型字符,格式) 例如: select to_date('10-12-2019','dd-mm-yyyy') from dual; select to_date('25-5月-95','dd-month-yy') from dual; select to_date('95/5月/25','yy/month/dd') from dual; //session语言环境设置为英文下面可以运行 select to_date('25-MAY-95','dd-MONTH-yy') from dual;