Oracle入门(三) 这些常用的函数你有多少不知道?
虽然我不提倡把业务逻辑在sql中处理,但一些简单的业务我认识还是在sql中处理,会让我节省不少功夫与效率,以下就常用的简单函数,有时可以让我们事半功倍,你记住了多少,又用到了多少?
--数值涵数
select abs(-100)from dual --返回绝对值
select sign(100),sign(-100),sign(0)from dual--正数返回1,负数返回-1,0返回0
select ceil(3.1)from dual --Ceil返回比数值大的最小整数
select floor(3.1)from dual --floor返回比数值小的最大整数
select power(2.5,2) from dual --返回power(m,n)m的n次方
select exp(3)from dual--返回e的3次方
select mod(35,8)from dual--返回35模8的值
select round(6388.8413)from dual--四舍五入 默认为小数点
select round(6388.8413)from dual--四舍五入到小数点后多少位
select round(6388.8413,2.56)from dual--四舍五入到小数点后多少位其和上面等价
select round(6388.8413,-2)from dual--四舍五入到小数点前多少位
select trunc(2343.856)from dual--直接截取数值不四舍五入结果为2343(默认为小数点后0位)
select trunc(2343.856,2)from dual--直接截取小数点后两位不四舍五入结果为2343.85
select trunc(2343.856,-2)from dual--直接截取小数点前两位不四舍五入结果为2300
select sqrt(16)from dual--返回平方根+4
--三角涵数
select sin(1.57079) from dual;--SIN(x)返回一个数字的正弦值
select sin(20),sinh(20) from dual;--SIGH(x)返回双曲正弦的值
select cos(-3.1415927) from dual;--COS(x)返回一个给定数字的余弦
select cosh(20) from dual;--COSH(x)返回一个数字反余弦值
select tan(20),tan(10) from dual;--TAN返回数字的正切值
select tanh(20),tan(20) from dual;--TANH返回数字n的双曲正切值
select asin(0.5) from dual;--ASIN(x)给出反正弦的值
select acos(-1) from dual;-- ACOS(x)给出反余弦的值
select atan(1) from dual;--ATAN(x)返回一个数字的反正切值
--字符涵数
select ascii('a')from dual--返回ascii码
select chr(97)from dual--由ASCII码返回字符
select concat('asdasd','ffff')from dual;--连接两个字符串
select initcap('asd asd')from dual--将首安母大写以空格为分界返回Asd Asd
select lower ('AAA')from dual --全部返回小写
select upper('aaa')from dual --全部返回大写
select length('asdas呵呵')from dual --返回字符的长度,汉字按一个字节计算返回7;
select lpad('呵呵',10,'*')from dual--lpad(s1,n,s2)在s1左边填写s2直到长度为民时结束
--返回******呵呵此时汉字长度按2个字节计算
select rpad('呵呵',10,'*')from dual --在右边填写
select instr('呵呵哈哈呵哈','呵哈',1,2)from dual--instr(s1,s2,m,n)从字符(串)s1的第m个位置开始查找
--处n次出现字符(串)s2的位置返回5;
select ltrim('abaacd','ac')from dual-- ltrim(s1,s2)从s1左边开始查找第一个不是s2集合中的元素时将s1中左
-- 边含s2的元素去掉返回baacd
select rtrim('abaacd','ad')from dual--从右边删除返回abaac
select trim('x'from'xxsda xxdxx asdxx')from dual--从两头删除返回sdaxxdxxasd trim(s1,s2)中s1只能为单字符
select replace('Hao are you','Hao','Who')from dual--替代replace(s1,s2,s3)其中s3可以省略为空
select translate('Hao are you','Hao','Who')from dual--功能和replace一样只是其参数不可以省
select substr('hao are you',3,9)from dual;--从字符串的第三位开始取到第9位返回"o are you"
TRUNC(45.936,2) FROM dual --空格不算,汉字按两个字节计算
--- 日期涵数
select sysdate from dual; --得到系统当前时间
select add_months(sysdate,3)from dual --当前时间上加3
select last_day(to_date('2009-08-25','YYYY-MM-DD'))from dual --当前月的最后一天返回2009-8-31
select months_between(sysdate,to_date('2009-08-25','YYYY-MM-DD')) from dual
-- months_between(d1,d2) d1>d2?正:负
select sysdate 当时日期,
round(sysdate) 最近0点日期,
round(sysdate,'day') 最近星期日,
round(sysdate,'month') 最近月初,
round(sysdate,'q') 最近季初日期,
round(sysdate,'year') 最近年初日期 from dual;
select sysdate 当时日期,
trunc(sysdate) 今天日期,
trunc(sysdate,'day') 本周星期日,
trunc(sysdate,'month') 本月初, trunc(sysdate,'q')
本季初日期, trunc(sysdate,'year') 本年初日期 from dual
select sysdate 当时日期,
next_day(sysdate,'星期一') 接下来星期一,
next_day(sysdate,'星期三') 接下来的星期三,
next_day(sysdate,'星期四') 接下来星期四,
next_day(sysdate,'星期五') 接下来星期五,
next_day(sysdate,'星期六') 接下来星期六,
next_day(sysdate,'星期日') 接下来星期日 from dual
select sysdate 当前日期,
next_day(sysdate,'星期一')下个星期一,
next_day(sysdate,'星期二')下个星期二,
next_day(sysdate,'星期四')下个星期四,
next_day(sysdate,'星期日')下个星期天
from dual
selectextract(hour from timestamp '2001-2-16 2:38:40 ') 小时,
extract(minute from timestamp '2001-2-16 2:38:40 ') 分钟,
extract(second from timestamp '2001-2-16 2:38:40 ') 秒,
extract(day from timestamp '2001-2-16 2:38:40 ') 日,
extract(MONTH from timestamp '2001-2-16 2:38:40 ') 月,
extract(YEAR from timestamp '2001-2-16 2:38:40 ') 年 from dual;
--通用涵数其中expr1,exper2,exper3的类型应该是相同的,若exper2与exper3的类型不相同则exper3会自动转化
select sal,comm ,sal+nvl(comm,0) from emp --nvl(expr1, expr2),若expr1为空则返回expr1否则返回expr2
select sal,comm , nvl2(comm,ename,sal) from emp--nvl(expr1,expr2,expr3),expr1为空返回expr3若
--expr1不为空返回expr2
select nullif(2,2)from dual--mullif(expr1, expr2)expr1, expr2相等返回null 不相等返回expr1.
--分组与分组涵数 having必须紧跟group by语句 对分组函数进行过滤只能用having子句不能使用where过滤
分享到:
相关推荐
第一章 Oracle入门 一、 数据库概述 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前。简单来说是本身可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据...
- **15天精讲精练_Android核心技术**:快速掌握Android开发基础知识,包括UI布局、Activity生命周期、数据存储、网络通信等。 - **Android从入门到实战**:从零开始学习Android开发,最终完成一个完整的项目,巩固所...
1. **20天横扫Java基础**:适合Java初学者,通过20天的学习掌握Java基础语法。 2. **尚硅谷Java基础实战——Bank项目**:通过实际项目加深对Java基础知识的理解和应用。 3. **Oracle、SQL、PLSQL视频教程**:数据库...
《在21天内自学SQL》一书是学习SQL编程语言的理想指南,旨在通过系统而深入的教学计划,帮助读者在三周时间内掌握SQL的核心概念与实际应用技能。本书分为三个阶段,每一周涵盖一系列关键主题,从基础到高级,循序渐...
- **预约时间:** 考生需要提前至少15天进行考试预约。 **报名条件:** - **个人证件要求:** 参加考试时需携带两种有效的个人证件,例如身份证和驾照、学生证或工作证等。 - **无其他限制:** 华为认证考试报名...
**Day2:查询入门——SELECT语句** - **SELECT语句**:用于从一个或多个表中检索数据。 - **基本语法**:`SELECT column1, column2 FROM table_name;` - **示例**:`SELECT name, age FROM users;` **Day3:表达式...