Oracle常用函数及使用案例(珍藏版)
oracle常用函数使用大全Oracle除法(转)

oracle常⽤函数使⽤⼤全Oracle除法(转)/chenmeng2192089/article/details/9155625⼀、运算符算术运算符:+ - * / 可以在select 语句中使⽤连接运算符:|| select deptno|| dname from dept;⽐较运算符:> >= = != < <= like between is null in逻辑运算符:not and or集合运算符: intersect ,union, union all, minus要求:对应集合的列数和数据类型相同查询中不能包含long 列列的标签是第⼀个集合的标签使⽤order by时,必须使⽤位置序号,不能使⽤列名例:集合运算符的使⽤:intersect ,union, union all, minusselect * from emp intersect select * from emp where deptno=10 ;select * from emp minus select * from emp where deptno=10;select * from emp where deptno=10 union select * from emp where deptno in (10,20); --不包括重复⾏select * from emp where deptno=10 union all select * from emp where deptno in (10,20); --包括重复⾏⼆.ORACLE⽇期时间函数⼤全TO_DATE格式(以时间:2007-11-02 13:45:25为例)Year:yy two digits 两位年显⽰值:07yyy three digits 三位年显⽰值:007yyyy four digits 四位年显⽰值:2007Month:mm number 两位⽉显⽰值:11mon abbreviated 字符集表⽰显⽰值:11⽉,若是英⽂版,显⽰novmonth spelled out 字符集表⽰显⽰值:11⽉,若是英⽂版,显⽰novemberDay:dd number 当⽉第⼏天显⽰值:02ddd number 当年第⼏天显⽰值:02dy abbreviated 当周第⼏天简写显⽰值:星期五,若是英⽂版,显⽰friday spelled out 当周第⼏天全写显⽰值:星期五,若是英⽂版,显⽰fridayddspth spelled out, ordinal twelfthHour:hh two digits 12⼩时进制显⽰值:01hh24 two digits 24⼩时进制显⽰值:13Minute:mi two digits 60进制显⽰值:45Second:ss two digits 60进制显⽰值:25其它Q digit 季度显⽰值:4WW digit 当年第⼏周显⽰值:44W digit 当⽉第⼏周显⽰值:124⼩时格式下时间范围为: 0:00:00 - 23:59:59....12⼩时格式下时间范围为: 1:00:00 - 12:59:59 ....1. ⽇期和字符转换函数⽤法(to_date,to_char)select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from dual; //⽇期转化为字符串select to_char(sysdate,'yyyy') as nowYear from dual; //获取时间的年select to_char(sysdate,'mm') as nowMonth from dual; //获取时间的⽉select to_char(sysdate,'dd') as nowDay from dual; //获取时间的⽇select to_char(sysdate,'hh24') as nowHour from dual; //获取时间的时select to_char(sysdate,'mi') as nowMinute from dual; //获取时间的分select to_char(sysdate,'ss') as nowSecond from dual; //获取时间的秒select to_date('2004-05-07 13:23:44','yyyy-mm-dd hh24:mi:ss') from dual//2. select to_char( to_date(222,'J'),'Jsp') from dual显⽰Two Hundred Twenty-Two3.求某天是星期⼏select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day') from dual;星期⼀select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual;monday设置⽇期语⾔ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';也可以这样TO_DATE ('2002-08-26', 'YYYY-mm-dd', 'NLS_DATE_LANGUAGE = American')4. 两个⽇期间的天数select floor(sysdate - to_date('20020405','yyyymmdd')) from dual;5. 时间为null的⽤法select id, active_date from table1UNIONselect 1, TO_DATE(null) from dual;注意要⽤TO_DATE(null)6.⽉份差a_date between to_date('20011201','yyyymmdd') and to_date('20011231','yyyymmdd')那么12⽉31号中午12点之后和12⽉1号的12点之前是不包含在这个范围之内的。
oracle进一法的函数

oracle进一法的函数摘要:一、Oracle 进一法函数简介1.函数定义2.常见用途二、Oracle 进一法函数的使用1.语法与参数2.示例与应用三、总结正文:一、Oracle 进一法函数简介在Oracle 数据库中,进一法函数(ROUNDUP)是一种四舍五入函数,用于将数字向上舍入到最接近的整数。
它可以将数值表达式的值四舍五入到最接近的整数,从而满足财务、统计等领域的需求。
1.函数定义Oracle 进一法函数的定义如下:```ROUNDUP(number, significance)```其中,`number` 是需要进行四舍五入的数值表达式,`significance` 是指定的舍入精度。
2.常见用途进一法函数在实际应用中主要用于以下场景:- 向上取整:对于任意实数`x`,`ROUNDUP(x)` 等于大于等于`x` 的最小整数。
- 设置精度:通过指定`significance` 参数,可以控制四舍五入的精度,例如保留两位小数、四舍五入到整百等。
二、Oracle 进一法函数的使用1.语法与参数进一法函数的语法如下:```ROUNDUP(number, significance)```参数说明:- `number`:需要进行四舍五入的数值表达式。
- `significance`:指定舍入精度,可以是一个整数或小数。
如果未指定或为NULL,则默认为0,表示四舍五入到整数。
2.示例与应用以下是一些Oracle 进一法函数的示例:- 向上取整:```SELECT ROUNDUP(5.5) FROM DUAL; -- 结果为6```- 保留两位小数:```SELECT ROUNDUP(5.555, 2) FROM DUAL; -- 结果为5.56```- 四舍五入到整百:```SELECT ROUNDUP(123.456, 100) FROM DUAL; -- 结果为1200```三、总结Oracle 进一法函数(ROUNDUP)是一种实用的四舍五入函数,可以满足不同场景下的需求。
oracle常用的分析函数

oracle常⽤的分析函数常⽤的分析函数如下所列:row_number() over(partition by ... order by ...)rank() over(partition by ... order by ...)dense_rank() over(partition by ... order by ...)count() over(partition by ... order by ...)max() over(partition by ... order by ...)min() over(partition by ... order by ...)sum() over(partition by ... order by ...)avg() over(partition by ... order by ...)first_value() over(partition by ... order by ...)last_value() over(partition by ... order by ...)lag() over(partition by ... order by ...)lead() over(partition by ... order by ...)⼀、Oracle分析函数简介:在⽇常的⽣产环境中,我们接触得⽐较多的是OLTP系统(即Online Transaction Process),这些系统的特点是具备实时要求,或者⾄少说对响应的时间多长有⼀定的要求;其次这些系统的业务逻辑⼀般⽐较复杂,可能需要经过多次的运算。
⽐如我们经常接触到的电⼦商城。
在这些系统之外,还有⼀种称之为OLAP的系统(即Online Aanalyse Process),这些系统⼀般⽤于系统决策使⽤。
通常和数据仓库、数据分析、数据挖掘等概念联系在⼀起。
这些系统的特点是数据量⼤,对实时响应的要求不⾼或者根本不关注这⽅⾯的要求,以查询、统计操作为主。
oracle like concat函数用法

oracle like concat函数用法Oracle like concat函数用法1. 简介Oracle数据库提供了concat函数来实现字符串的拼接操作。
该函数可以将多个字符串连接在一起,形成一个新的字符串。
本文将介绍concat函数的用法及常见示例。
2. 语法concat函数的语法如下:CONCAT(string1, string2)其中,string1是需要拼接的第一个字符串,string2是需要拼接的第二个字符串。
3. 示例拼接两个字符串下面的示例演示了如何使用concat函数拼接两个字符串:SELECT CONCAT('Hello', 'World') AS Result FROM dual;执行上述SQL语句后,将返回拼接后的结果字符串”HelloWorld”。
拼接多个字符串concat函数可以同时拼接多个字符串。
下面的示例演示了如何拼接三个字符串:SELECT CONCAT('Hello', ' ', 'World') AS Result FROMdual;执行上述SQL语句后,将返回拼接后的结果字符串”HelloWo rld”。
拼接字段值在实际应用中,我们通常需要将字段值与固定字符串拼接在一起。
下面的示例演示了如何拼接表中某个字段的值和一个固定字符串:SELECT CONCAT(name, ' is a ', occupation) AS ResultFROM employees;以上SQL语句将拼接employees表中name字段的值和occupation字段的值,返回拼接后的结果。
处理NULL值当拼接的字符串中存在NULL值时,concat函数的返回结果也将是NULL。
为了避免这种情况,可以使用COALESCE函数将NULL值转换为空字符串后再进行拼接。
下面的示例演示了如何处理NULL值:SELECT CONCAT(COALESCE(name, ''), ' is a ', COALESCE(occupation, '')) AS Result FROM employees;以上SQL语句将先将name字段和occupation字段的NULL值转换为空字符串,然后进行拼接操作。
oracle 时间比较函数

oracle 时间比较函数Oracle 时间比较函数Oracle数据库是一种关系型数据库管理系统,它支持SQL语言。
在Oracle数据库中,时间比较函数被广泛使用,用于比较和操作日期和时间数据。
这些函数提供了一种简便的方式来处理时间数据,并允许我们在查询中进行各种时间操作。
在Oracle数据库中,有多个时间比较函数可供使用。
下面将介绍其中一些常用的函数。
1. SYSDATE函数SYSDATE函数返回当前日期和时间。
它返回一个日期类型的值,可以用于比较、计算和显示当前日期和时间。
以下是SYSDATE函数的示例用法:SELECT SYSDATE FROM dual;2. TO_DATE函数TO_DATE函数用于将字符串转换为日期类型。
它接受两个参数,第一个参数是要转换的字符串,第二个参数是指定输入字符串的格式。
以下是TO_DATE函数的示例用法:SELECT TO_DATE('2022-01-01', 'YYYY-MM-DD') FROM dual;3. ADD_MONTHS函数ADD_MONTHS函数用于在给定日期上添加指定的月份。
它接受两个参数,第一个参数是要添加的日期,第二个参数是要添加的月份数。
以下是ADD_MONTHS函数的示例用法:SELECT ADD_MONTHS(SYSDATE, 3) FROM dual;4. MONTHS_BETWEEN函数MONTHS_BETWEEN函数用于计算两个日期之间的月份数。
它接受两个参数,第一个参数是较大的日期,第二个参数是较小的日期。
以下是MONTHS_BETWEEN函数的示例用法:SELECT MONTHS_BETWEEN(TO_DATE('2022-01-01', 'YYYY-MM-DD'), SYSDATE) FROM dual;5. NEXT_DAY函数NEXT_DAY函数用于找到给定日期之后的下一个指定的星期几。
oracle常用的开窗函数使用技巧

oracle常用的开窗函数使用技巧在数据库操作中,常常需要对数据进行分组、排序、过滤、统计等操作,这时候开窗函数就成为了一种非常有用的技巧。
Oracle是一种支持开窗函数的数据库,他们可以被用于查询、分析、排序、聚合等操作。
下面将为大家介绍几种常见的开窗函数使用技巧。
一、聚合函数实现在数据库中,聚合函数是非常常见的操作,例如SUM、COUNT、AVG等。
在某些情况下,我们需要在查询中同时获得数据的总量或平均值,这时候开窗函数就可以派上用场了。
下面是一个求平均值并加上一个平均值窗口的例子:SELECT name, salary, AVG(salary) OVER () AS average_salary FROM employee结果如下所示:name | salary | average_salary John Smith | 50000 | 66667 Jane Doe | 75000 | 66667 Harry Zheng| 83333 | 66667 Eva Li | 58000 | 66667二、分组函数实现有时候,我们需要按照某些条件来对数据进行分组操作,这就需要使用到分组函数。
例如以下查询就需要按照部门将员工数据进行分组:SELECT department, name, salary, AVG(salary)OVER (PARTITION BY department) AS average_salaryFROM employee结果如下所示:department | name | salary |average_salary IT | John Smith | 50000 |51667 IT | Harry Zheng| 83333 | 51667 HR | Jane Doe | 75000 | 66667 Finance | Eva Li | 58000 | 58000三、分析函数实现分析函数可以帮助我们对数据进行排序和分组。
oracle常用sql函数

oracle常用sql函数Oracle是一款非常优秀的数据库管理系统,它提供了很多强大的功能与工具,其中最基本而实用的功能就是SQL函数了。
下面我们将重点介绍一些常用的Oracle SQL函数,帮助读者更好地了解和掌握这些常用的函数,从而更加有效地处理和管理数据。
一、数值型函数1. ABS()函数:用于计算数值的绝对值,比如ABS(-10)会返回10。
2. CEIL()函数:用于向上取整,比如CEIL(3.14)会返回4。
3. FLOOR()函数:用于向下取整,比如FLOOR(3.14)会返回3。
4. MOD()函数:用于求模,比如MOD(12,5)会返回2。
5. ROUND()函数:用于四舍五入,比如ROUND(3.49)会返回3,而ROUND(3.51)会返回4。
二、字符型函数1. CONCAT()函数:用于连接两个字符串,比如CONCAT('hello','world')会返回helloworld。
2. SUBSTR()函数:用于截取字符串,比如SUBSTR('hello',2,3)会返回ell。
3. UPPER()函数:用于将字符串转换成大写,比如UPPER('hello')会返回HELLO。
4. LOWER()函数:用于将字符串转换成小写,比如LOWER('HELLO')会返回hello。
5. TRIM()函数:用于去掉字符串首尾的空格,比如TRIM(' hello ')会返回hello。
三、日期型函数1. CURRENT_DATE函数:用于获取当前日期,比如SELECT CURRENT_DATE FROM DUAL会返回当前日期。
2. SYSDATE函数:用于获取系统当前时间,比如SELECTSYSDATE FROM DUAL会返回系统当前时间。
3. TO_CHAR()函数:用于将日期转换成字符型,比如TO_CHAR(SYSDATE,'yyyy-mm-dd')会返回当前日期的年月日格式。
oracle常用函数使用大全_最新整理

单值函 数在查询 中返回单 个值,可 被应用到 select, where子 句,start with以及 connect by 子句 和having 子句。 (一).数值 型函数 (Number Functions ) 数值型函 数输入数 字型参数 并返回数 值型的值 。多数该 类函数的 返回值支 持38位小 数点,诸 如:COS, COSH, EXP, LN, LOG, SIN, SINH, SQRT, TAN, and TANH 支 持36位小 数点。 ACOS, ASIN, ATAN, and ATAN2支 持30位小
n1<0,则 oracle从 右向左数 确认起始 位置 例如: SELECT SUBSTR( 'What is this',-5,3) FROM DUAL;
n1>c1.len gth则返 回空 例如: SELECT SUBSTR( 'What is this',50,3) FROM DUAL; 然后再请 你猜猜, 如果 n2<1,会 如何返回 值呢
3、 TRUNC(n 1[,n2] 返 回截尾到 n2位小数 的n1的 值,n2缺 省设置为 0,当n2为 缺省设置 时会将n1 截尾为整 数,如果 n2为负 值,就截 尾在小数 点左边相 应的位上 。 例如: SELECT TRUNC(2 3.56),TRU NC(23.56, 1),TRUNC (23.56,-1) FROM DUAL;
例如: SELECT REPLAC E('WWhhh hhaT is tHis w W','W','-') FROM
9、 SOUNDE X(c) 神奇 的函数 啊,该函 数返回字 符串参数 的语音表 示形式, 对于比较 一些读音 相同,但 是拼写不 同的单词 非常有用 。计算语 音的算法 如下:
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Oracle常用函数及使用案例(珍藏版)一:sql函数:lower(char):将字符串转化为小写的格式。
upper(char):将字符串转化为大写的格式。
length(char):返回字符串的长度。
substr(char,m,n):取字符串的字串。
案例1.将所有员工的名字按小写的方式显示select lower(ename),sal from emp;案例2.将所有员工的名字按大写的方式显示。
select upper(ename),sal from emp;案例3.显示正好为五个字符的的员工的姓名。
select * from emp where length(ename)=5;案例4.显示所有员工姓名的前三个字符。
select substr(ename,1,3) from emp;//从名字的第一个字符开始取,向后取三个字符。
案例5.以首字母为大写的方式显示所有员工的姓名。
(1)首字母大写:select upper(substr(ename,1,1)) from emp;(2)完成后面字母小写。
select lower(substr(ename,2,length(ename)-1)) from emp;(3)合并select upper(substr(ename,1,1))||lower(substr(ename,2,length(ename)-1)) from emp;案例6.以首字母为小写的方式显示所有员工的姓名。
(需要有较高的灵活度,细心分析和清晰思路)(1)首字母小写:select upper(substr(ename,1,1)) from emp;(2)完成后面字母大写。
select lower(substr(ename,2,length(ename)-1)) from emp;(3)合并select lower(substr(ename,1,1))||upper(substr(ename,2,length(ename)-1)) from emp;案例7.函数(替换):replace(char1,search_string,replace_string);显示所有员工的姓名,用“我要替换A”替代所有“A”。
select replace(ename,'A','我是老鼠')from emp;案例8.以首字母为小写的方式显示所有员工的姓名。
select replace(ename,substr(ename,1,1),lower(substr(ename,1,1)))from emp;案例9.以首字母为大写的方式显示所有员工的姓名。
Selectreplace(ename,substr(ename,2,length(ename)-1),lower(substr(ename,2,length(ename) -1)))from emp;二:数学函数:(在财务中用的比较多)ronud(sal)用于四舍五默认取整;ronud(sal,1)用于四舍五留一位小数。
trunc(sal)取整,忽略小数。
截去小数部分。
trunc(sal,1)截取;小数点留一位,之后的右边的省去。
trunc(sal,-1)截取;只留整数,个位数取零。
floor(sal)向下最接近取整;比如1.1值为1.ceil(sal)向上最接近取整。
比如1.1值为2.做oracle测试时可以用dual表;mod(m,n)取模即取余。
// mod(10,2)=0;select mod(10,2) from dual;显示在一个月为30天的情况下所有员工的日薪金,忽略余数。
select trunc(sal/30)from emp;select floor(sal/30)from emp;返回绝对值:select abs(-13) from dual;power(m,n)m的n次幂。
三:日期函数:日期函数用来处理date类型的数据。
默认情况下日期格式时dd-mon-yy,即12-7月-78sysdate该函数返回系统时间。
select sysdate from dual;add_months(d,n),再原有的时间上增加月份。
last_day(d),返回指定日期所在月份的最后一天。
案例1:查找已经入职八个月多的员工select * from emp where sysdate>add_months(hiredate,8);系统时间大于雇用时间再加上八个月的时间。
那就是要八个月前入职的才满足这样的条件。
即八个月之前入职的案例2:.显示满十年服务年限的员工的姓名和受雇日期。
select * from emp where sysdate>=add_months(hiredate,12*10);案例3:对于每个员工,显示其加入公司的天数。
select sysdate - hiredate "入职天数" from emp;select trunc(sysdate - hiredate) "入职天数" from emp;案例4:.last_day(d):返回指定日期所在月份的最后一天。
找出各月倒数第三天受雇的所有员工。
求思路:(1)select hiredate,last_day(hiredate)from emp ;正解:(2)select hiredate,ename from emp where hiredate=last_day(严谨。
(hiredate)-2)四:转换函数:转换函数是用于将数据类型从一种转换为另一种。
在某些情况下,oracle server 允许的数值类型和实际的不一样,这时oracle server会隐含的转化数据类型。
例如:1.create table t1(id int);2.insert into t1 values(‘10’)//这样oracle会自动将‘10’转换为数字10/,如果是‘ab’会报错。
注:插入数据时,如果是整数,就不要带单引号。
如果为字符串类型,就要带单引号。
3.create table t2(id varchar2(10));insert into t2 values(1);//这样oracle就会自动将1转化为‘1’。
尽管oracle可以进行隐含的数据类型的转换,但是它并不适应所有的情况,为了提高程序的可靠性,我们应该使用转换函数进行转换。
4.to_charselect ename,hiredate,sal from emp where deptNO=10;显示信息,可是在某些情况下,这个并不能满足你的需求。
日期可以显示时/分/秒(1)insert into emp values(8881,‘test用户’,‘MANAGER’,7702,sysdate,23,23,10);(2)select ename,to_char(hiredate,'yyy-mm-dd hh24:mi:ss') from emp;5.薪水是否可以显示指定的货币符号:$在数字前加美元。
L在数字前加本地货币符号。
(1)select ename,to_char(hiredate,'yyy-mm-dd hh24:mi:ss'),to_char(sal,‘L99999.99’)from emp;(2)9:显示数字,并忽略前面0;0:显示数字,如位数不足,则用0不齐。
.在指定位置家小数点;,在指定位置显示逗号.L99999.99显示五位整数,两位小数点。
跟number(7,2)对应满足使用。
10.递进式查询:(1)显示所有雇员的入职日期(以常用格式显示):select ename,to_char(hiredate,'yyyy-mm-dd hh24:mi:ss')from emp;(2)显示1980年入职的所有员工。
select * from emp where to_char(hiredate,'yyyy')=1980;(3)显示所有12月份入职的员工。
select * from emp where to_char(hiredate,'mm')=12;to_char可以只显示时间的年,月,小时,分钟或者是秒钟。
11.to_date函数用于将字符串转换成date类型的数据。
insert into emp values (8888,'ok','MANAGER',7782,to_date('1988-12-10','yyyy-mm- dd'),34.34,23.23,10);五.系统函数terminal:当前会话客户所对应的终端的标示符。
language:语言:当前数据库名称nls_date_format:当前会话客户所对应的日期格式session_user:当前会话客户所对应的数据库用户名current_schema:当前会话客户所对应的默认方案名。
host:返回数据库所在主机的名称。
案例1:通过该函数,可以查询一些重要信息,比如你正在使用那个数据库?select sys_context('userenv','db_name') from dual;(1)当前用语言:select sys_context('userenv','language') from dual;(2)当前用户:select sys_context('userenv','session_user') from dual;(3)当前使用的方案:select sys_context('userenv',' current_schema ') from dual; scott--》方案scott(有表,右视图,有触发器,有存储过程)。