普通函数与表达式

一、字符串函数

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容

  • 1.简介 数据存储有哪些方式?电子表格,纸质文件,数据库。 那么究竟什么是关系型数据库? 目前对数据库的分类主要是...
    乔震阅读 1,699评论 0 2
  • ORACLE日期时间函数大全 TO_DATE格式(以时间:2007-11-02 13:45:25为例) Year:...
    雨一流阅读 653评论 0 2
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,560评论 18 399
  • /+NOCACHE(TABLE)/当进行全表扫描时,CACHE提示能够将表的检索块放置在缓冲区缓存中最近最少列表L...
    一点也不想吃辣阅读 442评论 0 1
  • 今天上午去参加模拟面试,两个半小时,提了很多刁钻的问题,见识了很多人不同的答案。总结就一个宗旨,再有思想有调理的情...
    忽尔今至阅读 142评论 2 0