普通函数与表达式

一、字符串函数

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);

你可能感兴趣的:(普通函数与表达式)