一、字符串函数
1.01、lpad()函数——左补全字符串
lpad(字符串,显示位数,补全显示的字符)
select lpad('12',6,'#') ss from dual;(结果显示:####12)
select lpad('1234567',4,'#') ss from dual;(结果显示:1234)
用于左补全字符串,若字符串长度大于显示位数,则从左开始截取显示位数长度
1.02、rpad()函数——右补全字符串
rpad(字符串,显示位数,补全显示的字符)
select rpad('12',6,'#') ss from dual;(结果显示:12####)
select rpad('1234567',4,'#') ss from dual;(结果显示:1234)
用于右补全字符串,若字符串长度大于显示位数,则从左开始截取显示位数长度
1.03、lower()函数——返回小写字符串
lower(字符串)
select lower('ABC') ss from dual;(结果显示:abc)
1.04、upper()函数——返回大写字符串
upper(字符串)
select upper('abc') ss from dual;(结果显示:ABC)
1.05、initcap()函数——单词首字母大写
initcap(字符串)
select initcap('ABC') ss from dual;(结果显示:Abc)
select initcap('big_BIG') ss from dual;(结果显示:Big_Big)
备注:initcap()函数不能自动识别单词,单词之间要用非单词隔开才行(_,/,空格等)1.06、length()函数——返回字符长度
length(字符串)
select length('ABC') ss from dual;(结果显示:3)select length(12.65) ss from dual;(结果显示:5)(会现将数值转化为字符串,再计算其长度)
备注:空格也是有效字符,会返回空格的长度,空字符串的长度不是0,而是null
1.07、substr()函数——截取字符串
substr(字符串,截取起始位置,截取长度)
select substr('1234567',4,2) ss from dual;(结果显示:45)
备注:从1开始,如果不指定长度,则从起始位置开始,截取到末尾
1.08、 instr()函数——获得字符串出现的位置
instr(父字符串,子字符串)
select instr('abc','a') ss from dual;(结果显示:1)
备注:可以指定额外的参数,开始搜索的位置及第几次搜到自字符串select instr('abaca','a',2,2) ss from dual;(结果显示:5 )
1.09、 ltrim()函数——删除字符串首部空格
ltrim(字符串)
select ltrim(' abc') ss from dual;(结果显示:abc)
备注:空格不仅包括了空格符,还包括Tab键、回车符、换行符1.10、 rtrim()函数——删除字符串尾部空格
rtrim(字符串)
select rtrim('abc ') ss from dual;(结果显示:abc)
1.11、 trim()函数——删除字符串首尾部空格
trim(字符串)
select trim(' abc ') ss from dual;(结果显示:abc)
1.12、 to_char()函数——将其他类型转换为字符类型
1、将数值类型转换为字符串
select to_char(120,'999') ss from dual;(结果显示:120)
select to_char(0.98,'999.99') ss from dual;(结果显示:.98)
select to_char(0.98,'000.00') ss from dual;(结果显示:000.98)
select to_char(0.98,'$000.00') ss from dual;(结果显示:$000.98)
select to_char(0.98,'u000.00') ss from dual;(结果显示:¥000.98)
备注:数值类型转换为字符时,可以按指定格式转换,转换格式中,可以包括数字0和9、千位分隔符(,)和小数点 ,如9,990或 999.09代表0~9之间的任意数值,0用于强制保留位置上的数据,若无对应数据或数据为0,则进行0填充或保留02、将日期类型转换为字符串
select to_char(sysdate,'yyyy-mm-dd') ss from dual;(结果显示:2015-11-22)
日期格式及说明:
格式:year 说明:获得年份的全拼 例如:twenty fifteen
格式:yyyy 说明:四位年份 例如:2015
格式:yyy 说明:三位年份 例如:015
格式:yy 说明:两位年份 例如:15
格式:y 说明:一位年份 例如:5
格式:q 说明:季度 例如:4
格式:mm 说明:两位月份 例如:6
格式:mon 说明:月份的缩写 例如:6月(与当前系统语言区域有关)
格式:month 说明:月份 例如:6月(与当前系统语言区域有关)
格式:ww 说明:一年中的第几周 例如:26
格式:w 说明:一月中的第几周 例如:4
格式:d 说明:一周中的第几天 例如:5(星期天为一周的第一天)
格式:dd 说明:一月中的第几天 例如:25
格式:ddd 说明:一年中的第几天 例如:125
格式:day 说明:一周中的星期几 例如:星期四(与当前系统语言区域有关)
格式:dy 说明:一周中的星期几 例如:星期四(与当前系统语言区域有关)
格式:hh 说明:某时刻的小时数 例如:11(默认12小时进制)
格式:hh12 说明:某时刻的12进制小时数 例如:11
格式:hh24 说明:某时刻的24进制小时数 例如:23
格式:mi 说明:某时刻的分钟数 例如:23
格式:ss 说明:某时刻的秒数 例如:23
格式:ff 说明:某时刻的毫秒数 例如:123
1.13、 chr()函数——将ascii码转换为字符串
insert into userinfo values('张三'||chr(13)||chr(10)||'李四',20);chr(13)为回车符,chr(10)为换行符
二、数学函数
2.01、abs()函数——返回数字的绝对值
select abs(-10) from dual;(结果显示:10)
2.02、round()函数——返回数字的四色五入值
select round(1.5673,2) from dual;(结果显示:1.57)(要加精确的位数,可以是正整数、0、负整数,若没加则默认为0)
select round(123.5673,-2) from dual;(结果显示:100)
select round(1.5673,0) from dual;(结果显示:2)
2.03、ceil()函数——向上取整
select ceil(12.5673) from dual;(结果显示:13)(获得大于或等于该参数的值)
2.04、floor()函数——向下取整
select floor(12.5673) from dual;(结果显示:12)(获得小于或等于该参数的值)2.05、mod()函数——获取余数
select mod(5,2) from dual;(结果显示:1 )(第一个参数为被除数,第二个为除数,第二个可以为0)select mod(5,0) from dual;(结果显示:5 )
2.06、sign()函数——返回数字的正负性
select sign(5) from dual;(结果显示:1 )
select sign(-5) from dual;(结果显示:-1 )
select sign(0) from dual;(结果显示:0 )(sign函数为判断两个数值的大小提供了方便)2.07、sqrt()函数——返回数字的平方根
select sqrt(4) from dual;(结果显示:2 )
2.08、power()函数——乘方运算
select power(3,2) from dual;(结果显示:9)(表示3的2次方)2.09、trunc()函数——截取数字
select trunc(12.3467,3) from dual;(结果显示:12.346)(表示保留小数点后的3位,保留的位数不写默认为0)
select trunc(12.3467,0) from dual;(结果显示:12)
select trunc(12.3467,-1) from dual;(结果显示:10)2.10、vsize()函数——返回数据的存储空间
vsize()函数根据数据库的存储格式,来返回其所占用的存储空间的字节数
select vsize(15.3467) from dual;(结果显示:4)select vsize('d') from dual;(结果显示:1)2.11、to_number()函数——将字符串转换为数值类型
select to_number('15.3467') from dual;(结果显示:15.3467)
三、日期函数
3.01、to_date()函数——将字符串转换为日期型
select to_date('11/23/2015','mm/dd/yyyy') from dual;(结果显示:23-11月-15)
3.02、add_months()函数——为日期加上特定月份
select add_months(sysdate,1) from dual;(结果显示:23-12月-15)(当前为11月,第一个参数为时间,第二个为加的月数)
3.03、last_day()函数——返回特定日期所在月的最后一天
select last_day(sysdate) from dual;(结果显示:30-11月-15)3.04、months_between()函数——返回两个日期所差的月数
select months_between(to_date('11/12/15','mm-dd-yy'),to_date('01/23/15','mm-dd-yy')) from dual;(结果显示:9.64516)select months_between(to_date('01/23/15','mm-dd-yy'),to_date('11/12/15','mm-dd-yy')) from dual;(结果显示:-9.64516)
如果第一个日期早于第二个日期,返回负数3.05、current_date函数——返回当前会话时区的当前日期
select sessiontimezone, current_date from dual;(结果显示:Asia/Shanghai;23-11月-15)(sessiontimezone获得当前会话时区)
3.06、current_timestamp函数——返回当前会话时区的当前时间戳
select sessiontimezone, current_timestamp from dual;(结果显示:Asia/Shanghai,23-11月-15 08.50.40.651000000 下午 ASIA/SHANGHAI)
3.07、extract函数——返回日期的某个域
select extract(year fromsysdate) from dual;(结果显示:2015)(获取当前日期的年部分)select extract(month fromsysdate) from dual;(结果显示:11)(获取当前日期的月部分)select extract(day fromsysdate) from dual;(结果显示:23)(获取当前日期的天部分)
select extract(hour fromsystimestamp) from dual;(结果显示:12)(获取当前时间小时数)select extract(minute fromsystimestamp) from dual;(结果显示:58)(获取当前时间分钟数)select extract(timezone_hourfromsystimestamp) from dual;(结果显示:8)(获取当前时区的小时数)(电脑上显示的小时数)四、聚合函数
聚合函数是指针对多条记录的函数 ,聚合函数返回记录集的统计值,不能与其中的单条记录同时出现4.01、max()函数——求最大值
select max(emp_salary) from employee;4.02、min()函数——求最小值
select min(emp_salary) from employee;
4.03、avg()函数——求平均值
select avg(emp_salary) from employee;
avg函数通常与group by 结合使用4.04、sum()函数——求和
select sum(emp_salary) from employee;
sum函数通常与group by 结合使用4.04、count()函数——获得记录数
count函数有三种方式来进行计数:count(*)——计数行数,count(column)——计数某列,count(1)——累加1
select count(*) from employee;(结果显示:2)
select count(emp_salary) from employee;(结果显示:1)(若该列中有null值,则不统计该行,有一行中emp_salary为null值,所以结果显示为1)
select count(1) from employee;(结果显示:2)(获取所有行数,count(1)的速度最快)五、其他函数5.01、decode()函数——多值判断
语法:decode(判断条件,值1,显示结果1,值2,显示结果2,……)
select emp_name,decode(sign(nvl(emp_salary,0)-4000),1,'高工资',0,'一般工资',-1,'低工资') incomming from employee;
5.02、nvl()函数——空值处理语法:nvl(某列,替换值)(判断该列是否为空,若为null,则替换为替换值)
select emp_name,decode(sign(nvl(emp_salary,0)-4000),1,'高工资',0,'一般工资',-1,'低工资') incomming from employee;
5.03、cast()函数——强制转换数据类型
create table aa as selectcast(emp_id as number)id from employee;
六、运算表达式
6.01、算数运算符(+,-,*,/)
6.02、比较运算符(>,>=,<,<=,<>,!=)
6.03、逻辑运算符(and,or,not)
6.04、特殊判断式(between:取值范围、in:集合成员测试、like:模糊匹配、is null:空值判断、all,some.any:数量判断、exsits:存在性判断)
between:between……and的值包含最大最小值,如:between 20and 30相当于20<=x<=30,between……and的效率要比<=,>=低
like:通配符%(百分号)表示任意长度任意字符串, 如:like 'a%',_(下划线)表示一个任意的字符串exsits:select * from t_employee e where exists(select * from t_salary where employee_id=e.employee_id);
备注:in用于判断表的列值是否存在于列表中,exists用于判断查询结果是否为空,若为真,则返回符合条件的数据,若为假,则返回空值,判断存在性
all,some.any:all表示所有,some表示一些,any表示任何和some是等价的
如:select * from t_salary where salary>all(select distinct salary from t_salary where employee_id=4 oremployee_id=5);