Oracle学习笔记六 SQL常用函数

函数的分类

Oracle 提供一系列用于执行特定操作的函数

SQL 函数带有一个或多个参数并返回一个值

以下是SQL函数的分类:

单行函数对于从表中查询的每一行只返回一个值

可以出现在 SELECT 子句中和 WHERE 子句中

单行函数可以大致划分为:

  1.日期函数

  2.数字函数

  3.字符函数

  4.转换函数

  5.其他函数

单行函数

日期函数

日期函数对日期值进行运算,并生成日期数据类型或数值类型的结果

日期函数包括:

  1.ADD_MONTHS

  2.MONTHS_BETWEEN

  3.LAST_DAY

  4.ROUND

  5.NEXT_DAY

  6.TRUNC

  7.EXTRACT

--Sysdate:获取系统时间函数
Select sysdate from dual;

--Add_months:指定日期增加(减少)月份的时间
Select add_months(‘24-10月-15‘, 12) from dual;
Select add_months(sysdate, 10) from dual;

--Months_between:返回两个时间之间的月份的差
Select months_between(sysdate, ‘24-12月-15‘) from dual;

--Last_day:返回本月最后一天
Select last_day(sysdate) from dual;

--Next_day:下一个日期是什么时候
Select next_day(sysdate, ‘星期六‘) from dual;

--To_date(日期, 日期格式):将一个日期按照指定的格式转成一个日期数据;
Select to_date(‘2015/10/24‘, ‘yyyy-mm-dd‘) from dual;

字符函数

字符函数接受字符输入并返回字符或数值


函数


输入


输出


说明


Initcap(char)


Select initcap(‘hello’) from dual;


Hello


将首字母大写


Lower(char)


Select lower(‘FUN’) from dual;


fun


大写转换为小写


Upper(char)


Select upper(‘sun’) from dual;


SUN


小写转换为大写


Ltrim(char,set)


Select ltrim( ‘xyzadams’,’xyz’) from dual;


adams


从左边开始找,删除指定字符


Rtrim(char,set)


Select rtrim(‘xyzadams’,’ams’) from dual;


xyzad


从右边开始找,删除指定字符


Translate(char, from, to)


Select translate(‘jack’,’j’ ,’b’) from dual;


back


替换字符


Replace(char, searchstring,[rep string])


Select replace(‘jack and jue’ ,’j’,’bl’) from dual;


black and blue


替换所有指定字符


Instr (char, m, n)


Select instr (‘worldwide’,’d’) from dual;


5


找到指定字符的位置


Substr (char, m, n)


Select substr(‘abcdefg’,3,2) from dual;


cd


找到指定位置的字符


Concat (expr1, expr2)


Select concat (‘Hello’,’ world’) from dual;


Hello world


拼接字符

以下是一些其它的字符函数:

  • CHR和ASCII   CHR:将ASCII码转换成char字符;ASCII:得到字符的ASCII码
  • LPAD和RPAD      将不够的字符补齐:
    •   例:
    • select rpad(‘1234.5‘, 10, ‘0‘) from dual;--输出‘1234.50000‘
    • select job, lpad(job, 10, ‘ ‘) from emp;
  • TRIM    去掉两边的空格
  • LENGTH  计算长度
    • Select * from emp2 where length(ename) = 4; --名字为4个字符的数据
  • DECODE

数字函数

数字函数接受数字输入并返回数值结果


函数


输入


输出


说明


Abs(n)


Select abs(-15) from dual;


15


取绝对值


Ceil(n)


Select ceil(44.778) from dual;


45


上取整函数


Cos(n)


Select cos(180) from dual;


-.5984601


余弦函数


Sin(n)


Select sin(0) from dual;


0


正弦函数


Floor(n)


Select floor(100.2) from dual;


100


四舍五入


Power(m,n)


Select power(4,2) from dual;


16


函数


Mod(m,n)


Select mod(10,3) from dual;


1


求余函数


Round(m,n)


Select round(100.256,2) from dual;


100.26


向上把数值字段舍入为指定的小数位数


Trunc(m,n)


Select trunc(100.256,2) from dual;


100.25


向下把数值字段舍入为指定的小数位数


Sqrt(n)


Select sqrt(4) from dual;


2


平方根函数


Sign(n)


Select sign(-30) from dual;


-1


符号函数

当x<0时,sgn(x)=-1

当x=0时,sgn(x)=0

当x>0时,sgn(x)=1

转换函数

转换函数将值从一种数据类型转换为另一种数据类型

常用的转换函数有:

  TO_CHAR  --转换为字符

  TO_DATE  --转换为时间类型

  TO_NUMBER  --转换为Number类型

转换空值函数:

以下是几个用来转换空值的函数:

  NVL

  NVL2

  NULLIF

Select sal, comm, sal+nvl(comm, 0) from emp;  --如果comm为null,用0表示

select itemdesc, NVL(re_level,0) from itemfile;

select itemdesc, NVL2(re_level,re_level,max_level) from itemfile;

select itemdesc, NULLIF(re_level,max_level) from itemfile;

分组函数

分组函数基于一组行来返回结果

为每一组行返回一个值

Avg:求整个列的平均值

Select avg(sal) from emp;  --平均工资

Min:最小值

Select min(sal) from emp;

Max:最大值

Sum:总和

Count:计算条数;注:如果写的是列名,则不统计null行。

Select count(*) from emp where job=‘MANAGER‘; --统计有多少个经理
Select sum(sal) from emp;  --统计工资的总和
Select count(*) from emp where deptno = 30;   --统计部门号为30的有多少个人
select count(distinct job) from emp;  --有多少个岗位,去除重复数据

注:查询出来的结果不能喝其他行列一同显示:

select ename, min(sal) from emp;--错误写法

GROUP BY子句

用于将信息划分为更小的组

每一组行返回针对该组的单个结果

select p_category, MAX(itemrate) from itemfile group by p_category;

HAVING子句

用于指定 GROUP BY 子句检索行的条件

select p_category, MAX(itemrate) from itemfile group by p_category having p_category not in (‘accessories‘);

分析函数

分析函数根据一组行来计算聚合值

用于计算完成聚集的累计排名、移动平均数等

分析函数为每组记录返回多个行

以下三个分析函数用于计算一个行在一组有序行中的排位,序号从1开始

1.ROW_NUMBER 返回连续的排位,不论值是否相等

2.RANK 具有相等值的行排位相同,序数随后跳跃

3.DENSE_RANK 具有相等值的行排位相同,序号是连续的

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;
时间: 2024-09-11 11:30:39

Oracle学习笔记六 SQL常用函数的相关文章

Oracle学习笔记三 SQL命令

SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)               下面是这四种SQL语言的详细笔记: Oracle学习笔记三 SQL命令(二):SQL操作语言类别 Oracle数据类型 创建表时,必须为各个列指定数据类型 以下是 Oracle 数据类型的类别: 字符数据类型 CHAR类型 当需要固定长度的字符串时,使用 CHAR 数据类型. CHAR 数据类型存储字母数字值. CH

Oracle学习笔记—数据字典和常用命令(转载)

转载自: oracle常用数据字典和SQL语句总结 Oracle常用命令大全(很有用,做笔记) 一.Oracle数据字典 数据字典是Oracle存放有关数据库信息的地方,其用途是用来描述数据的.比如一个表的创建者信息,创建时间信息,所属表空间信息,用户访问权限信息等.当用户在对数据库中的数据进行操作时遇到困难就可以访问数据字典来查看详细的信息. Oracle中的数据字典有静态和动态之分.静态数据字典主要是在用户访问数据字典时不会发生改变的,但动态数据字典是依赖数据库运行的性能的,反映数据库运行的

Oracle学习笔记五 SQL命令(三):Group by、排序、连接查询、子查询、分页

GROUP BY和HAVING子句 GROUP BY子句 用于将信息划分为更小的组每一组行返回针对该组的单个结果 --统计每个部门的人数: Select count(*) from emp group by deptno; --根据部门分组,并统计 Select deptno, count(*) form emp group by deptno; select deptno, avg(sal) from emp group by deptno; --每个部门的平均工资 HAVING子句 用于指定

Python学习笔记六(常用模块、面向对象基础)

一.random模块 import random print(random.random()) #0-1之间的小数 print(random.randint(1,5)) #1-5之间(包括1和5)的整数 print(random.randrange(1,5)) #1-5之间(包含1,不好包含5)的整数 print(random.choice(['a','b','c'])) #给定列表中任意元素 print(random.sample(['a','b','c','d'],2)) #给定列表中任意n

oracle学习第三天常用函数

1) trunc函数,用于截断数字, 截断数字,用法为:trunc(n1,n2),n1表示要被截断的数字,n2表示要截断到那位,但是不会进行四舍五入. n2还可以表示负数,表示截断到小数点前,意思就是小数点后面的都不要了,最后结果是以0结尾的整数. 当trunc(n1,n2)当n2为负数时,-1表示个位为0,-2表示个位和十位都为0,后面一次类推.SQL> select trunc(13.1) from dual; TRUNC(13.1)----------- 13 SQL> select t

oracle学习笔记(六)

1.创建一个表 不加约束 create table t_user( id number,--类型是number类型 name varchar2(20),--varchar2()可以变化 gender char(2), birthday date default sysdate 默认是当前日期 ) 加上约束 create table t_user2( id number , name varchar2(20) check(length(name)>2), gender char(2) check(

MySQL学习笔记(三):常用函数

一:字符串函数 需要注意的几个细节: 1.cancat中有一个字符串为null,则结果为null. 2.left(str,x) 和 right(str,x)中x为null,则不返回任何字符串,不是null. 二:数值函数 注意的几个细节: 1.truncate(x,y) 和 round(x,y) 都能截断,只是round会四舍五入,而truncate不会. 三:日期和时间函数 四:流程函数 五:其他函数

Oracle 学习笔记 18 -- 存储函数和存储过程(PL/SQL子程序)

PL/SQL子程序 包括函数和过程.这里的函数指的是用户自己定义的函数,和系统函数是不同的.子程序一般是完成特定功能的PL/SQL程序块,并且具有一定的通用性,可以被不同的应用程序多次调用.Oracle提供可以把PL/SQL程序存储在数据库中,并可以再任何地方来运行它.这样就叫做存储过程或者是函数.过程和函数的唯一区别就是函数总是向调用者返回数据,而过程则不返回数据. 函数 如果用户要经常执行某些操作,并且需要返回特定的数据,那么就可以将这些操作构造成一个函数. 可以使用SQL语句定义函数. 基

Oracle 学习笔记 17 -- 异常处理(PL/SQL)

程序在执行过程中出现异常是正常的,在程序的编写过程中出现异常也是不可避免的.但是要有相应的异常处理的机 制,来保证程序的正常执行.PL/SQL程序执行过程中出现的错误,称为异常.一个优秀的程序都应该能够正确处理 各种出错的情况,并尽可能的从错误中恢复.PL/SQL提供了异常处理机制. 概念: 异常处理(exception)是用来处理正常执行过程中未预料的事件,程序块的异常处理定义的错误和自定义的错误, 由于PL/SQL程序块一旦产生异常而没有指出如何处理时,程序就会异常的终止. 有三种类型的错误