Oracle常用函数
- 格式:doc
- 大小:113.00 KB
- 文档页数:4
oracle数学函数Oracle数据库中提供了多种数学函数,用于处理数值数据。
这些函数可以用于执行各种计算,包括取整、四舍五入、求平方根、幂运算、三角函数等等。
以下将介绍一些常用的Oracle数学函数:1.ABS(x)函数:返回给定数值x的绝对值。
如ABS(-5)的结果为54.CEIL(x)函数:返回不小于给定数值x的最小整数。
如CEIL(3.6)的结果为45.FLOOR(x)函数:返回不大于给定数值x的最大整数。
如FLOOR(3.6)的结果为36.MOD(x,y)函数:返回给定数值x除以y的余数。
如MOD(10,3)的结果为17.POWER(x,y)函数:返回给定数值x的y次幂。
如POWER(2,3)的结果为88.SQRT(x)函数:返回给定数值x的平方根。
如SQRT(9)的结果为311.LOG(x,y)函数:返回给定数值x的以y为底的对数。
如LOG(100,10)的结果为212.SIN(x)函数:返回给定角度x的正弦值。
其中角度的单位为弧度。
如SIN(PI/2)的结果为113.COS(x)函数:返回给定角度x的余弦值。
其中角度的单位为弧度。
如COS(PI/3)的结果为0.514.TAN(x)函数:返回给定角度x的正切值。
其中角度的单位为弧度。
如TAN(PI/4)的结果为115.ASIN(x)函数:返回给定数值x的反正弦值(弧度)。
如ASIN(1)的结果为PI/216.ACOS(x)函数:返回给定数值x的反余弦值(弧度)。
如ACOS(0.5)的结果为PI/317.ATAN(x)函数:返回给定数值x的反正切值(弧度)。
如ATAN(1)的结果为PI/418.ATAN2(y,x)函数:返回给定直角坐标系中点(x,y)的极坐标系中点的角度值(弧度)。
如ATAN2(1,1)的结果为PI/4以上只是一些常用的Oracle数学函数,Oracle还提供了更多的数学函数,如指数函数、对数函数、双曲函数等等。
可以根据具体需求选择适合的函数进行数值计算。
oracle 常用字符串函数Oracle是一种广泛使用的关系型数据库管理系统,它提供了许多强大的函数和工具来处理和管理数据。
在Oracle中,字符串函数是最常用的函数之一,它们可以帮助我们处理和操作字符串数据。
在本文中,我们将介绍一些常用的Oracle字符串函数。
1. SUBSTR函数SUBSTR函数用于从字符串中提取子字符串。
它的语法如下:SUBSTR(string, start_position, [length])其中,string是要提取子字符串的字符串,start_position是子字符串的起始位置,length是要提取的子字符串的长度(可选)。
如果省略length,则将提取从start_position开始的所有字符。
例如,以下语句将从字符串“Hello World”中提取“World”:SELECT SUBSTR('Hello World', 7) FROM dual;输出结果为:“World”。
2. INSTR函数INSTR函数用于查找字符串中某个子字符串的位置。
它的语法如下:INSTR(string, substring, [start_position], [nth_appearance])其中,string是要查找的字符串,substring是要查找的子字符串,start_position是查找的起始位置(可选),nth_appearance是要查找的子字符串的第几个出现位置(可选,默认为1)。
例如,以下语句将查找字符串“Hello World”中第一个出现的字母“o”的位置:SELECT INSTR('Hello World', 'o') FROM dual;输出结果为:5。
3. CONCAT函数CONCAT函数用于连接两个或多个字符串。
它的语法如下:CONCAT(string1, string2, ...)其中,string1、string2等是要连接的字符串。
oralce函数Oracle是一种关系数据库管理系统,它使用了一种名为Oracle数据库的数据库管理系统。
Oracle是一种强大的工具,提供了许多内置函数,可以用于在数据库中进行各种操作。
以下是一些常用的Oracle函数。
1.聚合函数-AVG:计算指定列的平均值。
-COUNT:计算指定列中非空数据的数量。
-SUM:计算指定列的总和。
-MAX:找到指定列的最大值。
-MIN:找到指定列的最小值。
2.字符串函数-CONCAT:将两个字符串连接成一个字符串。
-LOWER:将字符串转换为小写。
-UPPER:将字符串转换为大写。
-LENGTH:计算字符串的长度。
-SUBSTR:返回一个字符串的子字符串。
3.数值函数-ROUND:将一个数值四舍五入到指定的小数位数。
-CEIL:向上取整,返回不小于指定数值的最小整数。
-FLOOR:向下取整,返回不大于指定数值的最大整数。
-ABS:返回指定数值的绝对值。
-MOD:返回两个数值的余数。
4.日期和时间函数-SYSDATE:返回当前日期和时间。
-ADD_MONTHS:在指定日期上增加指定的月份。
-TRUNC:截断日期或时间到指定的精度。
-MONTHS_BETWEEN:计算两个日期之间的月数差。
-TO_CHAR:将日期转换为指定格式的字符串。
5.条件函数-DECODE:根据条件返回不同的值。
-CASE:根据条件执行不同的操作。
-NVL:如果给定的表达式为NULL,则将其替换为指定的值。
-NULLIF:如果两个表达式的值相等,则返回NULL。
6.分析函数-ROW_NUMBER:为每一行分配一个唯一的数字。
-RANK:为每一行分配一个排名,如果有并列的值,则排名相同。
-DENSE_RANK:为每一行分配一个排名,如果有并列的值,则排名可以重复。
-LEAD:返回指定行后的值。
-LAG:返回指定行前的值。
上述函数只是Oracle提供的一小部分功能,Oracle还提供了许多其他有用的函数。
ORACLE时间常⽤函数(字段取年、⽉、⽇、季度)TO_DATE格式Day:dd number 12dy abbreviated friday spelled out fridayddspth spelled out, ordinal twelfthMonth:mm number 03mon abbreviated marmonth spelled out marchYear:yy two digits 98yyyy four digits 199824⼩时格式下时间范围为: 0:00:00 - 23:59:59.... 12⼩时格式下时间范围为: 1:00:00 - 12:59:59 ....Y或YY或YYY 年的最后⼀位,两位或三位Select to_char(sysdate,’YYY’) from dual;002表⽰2002年SYEAR或YEAR SYEAR使公元前的年份前加⼀负号Select to_char(sysdate,’SYEAR’) from dual; -1112表⽰公元前111 2年Q 季度,1~3⽉为第⼀季度 Select to_char(sysdate,’Q’) from dual; 2表⽰第⼆季度①MM ⽉份数 Select to_char(sysdate,’MM’) from dual; 12表⽰12⽉RM ⽉份的罗马表⽰ Select to_char(sysdate,’RM’) from dual; IV表⽰4⽉Month ⽤9个字符长度表⽰的⽉份名 Select to_char(sysdate,’Month’) from dual; May后跟6个空格表⽰5⽉WW 当年第⼏周 Select to_char(sysdate,’WW’) from dual; 24表⽰2002年6⽉13⽇为第24周W 本⽉第⼏周 Select to_char(sysdate,’W’) from dual; 2002年10⽉1⽇为第1周DDD 当年第⼏, 1⽉1⽇为001,2⽉1⽇为032 Select to_char(sysdate,’DDD’) from dual; 363 2002年1 2⽉2 9⽇为第363天DD 当⽉第⼏天 Select to_char(sysdate,’DD’) from dual; 04 10⽉4⽇为第4天D 周内第⼏天 Select to_char(sysdate,’D’) from dual; 5 2002年3⽉14⽇为星期⼀DY 周内第⼏天缩写 Select to_char(sysdate,’DY’) from dual; SUN 2002年3⽉24⽇为星期天HH或HH12 12进制⼩时数 Select to_char(sysdate,’HH’) from dual;02 午夜2点过8分为02 HH24 24⼩时制 Select to_char(sysdate,’HH24’) from dual; 14 下午2点08分为14MI 分钟数(0~59) Select to_char(sysdate,’MI’) from dual; 17下午4点17分SS 秒数(0~59) Select to_char(sysdate,’SS’) from dual; 22 11点3分22秒提⽰注意不要将MM格式⽤于分钟(分钟应该使⽤MI)。
在Oracle数据库中,我们经常会遇到需要获取字段长度的需求。
在实际的数据库开发中,有时候需要对字段的长度进行验证、限制或者计算。
而在Oracle数据库中,我们可以借助一些内置函数来轻松地获取字段的长度信息。
本文将介绍一些常用的Oracle函数,用于获取字段长度的相关信息。
1. LENGTH函数LENGTH函数是Oracle中用于获取字符串长度的函数。
它的用法非常简单,只需要在函数的括号中传入要计算长度的字符串即可。
例如:```sqlSELECT LENGTH('Hello') FROM dual;```以上SQL语句将返回字符串'Hello'的长度,结果为5。
2. CHAR_LENGTH函数CHAR_LENGTH函数与LENGTH函数类似,也是用于获取字符串长度的函数。
不过它主要用于计算多字节字符的长度,对于单字节字符,与LENGTH函数的结果相同。
例如:```sqlSELECT CHAR_LENGTH('你好') FROM dual;```以上SQL语句将返回字符串'你好'的长度,结果为2。
3. 字段长度限制在数据库设计中,有时候需要对字段的长度进行限制。
这时可以通过数据库约束来实现。
使用CREATE TABLE或ALTER TABLE语句可以为字段添加长度约束,例如:```sqlCREATE TABLE users (username VARCHAR2(20));```以上SQL语句创建了一个名为users的表,其中的username字段长度被限制为20个字符。
4. 字段长度验证在数据库应用开发中,经常需要对用户输入的数据进行长度验证。
可以通过在应用程序中调用LENGTH函数来验证字段的长度是否符合要求。
例如在PL/SQL中可以这样写:```sqlIF LENGTH(input_string) > 10 THEN-- 执行相应的逻辑END IF;```以上代码会验证input_string的长度是否大于10,如果满足条件则执行相应的逻辑。
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 函数的用法Oracle 是一个非常强大的数据库管理系统,它提供了丰富的函数库,可以让我们在SQL 语句中使用各种函数来实现数据处理、计算和查询。
本文将给大家介绍一些常用的Oracle 函数及其用法。
一、字符串函数1. UPPER 函数:将字符串转换为大写字母。
SELECT UPPER('hello world!') FROM DUAL;结果为:HELLO WORLD!结果为:hello world!3. INSTR 函数:查找子字符串在字符串中第一次出现的位置。
结果为:54. SUBSTR 函数:截取字符串的一部分。
5. REPLACE 函数:将字符串中的某个子串替换为另一个子串。
二、数值函数1. ROUND 函数:将指定的数字四舍五入到指定的小数位数。
3. ABS 函数:计算数字的绝对值。
4. SIGN 函数:返回数字的符号,如果为正数返回 1,为负数返回 -1,为零返回 0。
SELECT SIGN(-10), SIGN(10), SIGN(0) FROM DUAL;结果为:-1 1 05. POWER 函数:计算一个数的指定次幂。
三、日期函数1. SYSDATE 函数:返回当前系统日期和时间。
SELECT SYSDATE FROM DUAL;2. MONTHS_BETWEEN 函数:计算两个日期之间相差的月数。
SELECT MONTHS_BETWEEN('2022-01-01', '2021-01-01') FROM DUAL;3. ADD_MONTHS 函数:对指定日期增加指定的月数。
4. TRUNC 函数:截取日期到指定的精度,例如截取到月份。
5. TO_CHAR 函数:将日期类型转换为字符串类型。
SELECT TO_CHAR(SYSDATE, 'yyyy-mm-dd hh24:mi:ss') FROM DUAL;结果为:2021-08-01 14:00:00四、聚合函数1. COUNT 函数:计算查询结果集中的行数。
ORACLE常用函数功能演示文档撰写:孟祥新写在前面:ORACLE内置函数,相当于C语言中的库函数,提供了常规数据库编程中所需的绝大多数基本功能,并且通过函数的组合或嵌套使用,可以发挥其强大的功能。
由于这些内置函数都是由ORACLE公司的编程大家所写,而且其执行代码是内嵌在ORACLE数据库系统中的,因此其执行效率极高。
在数据库编程中能广泛使用ORACLE所提供的内置函数,将大大提高程序代码的执行效率。
“站在高人的肩膀上,将使你变得更高”。
演示之前的环境设置:为了在SQL*PLUS中直观地显示函数返回的结果,我将“头”信息先屏蔽掉。
操作如下:一、单行函数1.数值函数(1)三角函数①SIN、ASIN、SINH(正弦、反正弦、双曲正弦)②COS、ACOS、COSH(余弦、反余弦、双曲余弦)③TAN、ATAN、TANH(正切、反正切,双曲正切)(2)幂、方根及对数运算函数①POWER(m, n)(取m的n次幂)②SQRT(n)(取n的平方根)③EXP(n)(取自然对数底e的n次方根)④LN(n)(取n的自然对数)⑤LOG(m, n)(取以m为底n的对数)以上函数功能演示如下:(3)数值处理函数①ABS(n)(取绝对值)②SIGN(n)(符号函数)③CEIL(n)(取不小于n的最小整数)④FLOOR(n)(取不大于n的最大整数)⑤ROUND(n, [m])(按m精度对n进行4舍5入)⑥TRUNC(n, [m])(按m精度对n进行截取)⑦MOD(m, n)(取m除以n的余数)以上函数功能演示如下:2.字符处理函数(1)对字符串的大小写处理的函数①INITCAP(功能:将字符串中每个单词的首字母,变换为大写。
)②UPPER(功能:将字符串中的所有字母,转换为大写。
)③LOWER(功能:将字符串中的所有字母,转换为小写。
)以上函数功能演示如下:(2)对字符串进行处理的函数①CONCAT(字符串连接函数,也可用|| 替代)功能演示如下:②ASCII(取字符的编码)③CHR(将编码转换为对应的字符)以上函数功能演示如下:④LTRIM(去除左侧空格/指定字符)⑤RTRIM(去除右侧空格/指定字符)⑥TRIM(去除两侧的空格/去除指定字符)以上函数去除空格功能演示如下:以上函数去除指定字符功能演示如下:请注意:在用TRIM去除字符串中指定字符(非空格)时的特殊用法。
数值函数
日期函数
SELECT TO_CHAR(sysdate,'YYYY-MM-DD HH24:MI:SS AM DY') FROM dual; SELECT TO_CHAR(sysdate,'YYYY"年"MM"月"DD"日"') FROM dual;
其他函数
5.高级查询(多表联合查询)
例子:
SELECT job 职务 , SUM(sal) 工资总和 FROM emp
WHERE job != 'PRESIDENT'
GROUP BY job
HAVING SUM(sal)>4500
ORDER BY SUM(sal);
分析函数
以下三个分析函数用于计算一个行在一组有序行中的排位,序号从1开始
ROW_NUMBER返回连续的排位,不论值是否相等
RANK具有相等值的行排位相同,序数随后跳跃
DENSE_RANK 具有相等值的行排位相同,序号是连续的
例子:
SELECT deptno, ename, sal, comm, RANK() OVER
(PARTITION BY deptno ORDER BY sal DESC, comm) RANK
FROM emp;
SELECT ename, job, deptno, sal, ROW_NUMBER() OVER
(ORDER BY sal DESC) AS SAL_RANK
FROM SCOTT.EMP;
SELECT d.dname, e.ename, e.sal, DENSE_RANK()
OVER (PARTITION BY e.deptno ORDER BY e.sal DESC)
AS DENRANK
FROM emp e, dept d WHERE e.deptno = d.deptno;
rollup()合计函数,求合计
cube ()合计函数比前一个更详细
例子(也可以叫交叉报表交叉报表)
create table test(sales varchar2(10),dest varchar2(10),revenue number)
insert into test values('smith','hangzhou',1000);
insert into test values('smith','wenzhou',2000);
insert into test values('allen','wenzhou',3000);
insert into test values('allen','wenzhou',4000);
SELECT sales, nvl(dest,'合计'),SUM(revenue)FROM test GROUP BY CUBE(sales, dest);
SELECT sales, nvl(dest,'合计'),SUM(revenue)FROM test GROUP BY ROLLUP(sales, dest);
比CUBE少2原因是没有对hangzhou、wenzou 的综合进行统计
nullif(exp1,exp2)如果相等返回null 不相等返回第一个。