Oracle数据库教程(第4章DML应用1_Oracle常用的系统函数)笔记

Oracle数据库教程

  • 一、Oracle常用的系统函数
    • 1、字符串函数:处理字符的函数
      • 1.1 ASCII(c)函数和CHR(i)函数
      • 1.2 CONCAT(s1,s2)函数
      • 1.3 initcap()函数
      • 1.4 instr(s1,s2,i,j)函数
      • 1.5 length(s)函数
      • 1.6 LOWER(s)函数和UPPER(s)函数
      • 1.7 replace(s1,s2,s3)函数
      • 1.8 substr(s,i,[j])函数
      • 1.9 nvl(表达式1,表达式2)
    • 2、数字类函数
      • 2.1 ABS(n)
      • 2.2 ROUND(n1,n2)函数
      • 2.3 POWER(n,m)函数
    • 3、日期和时间类函数
      • 3.1 sysdate表示当前日期
      • 3.2 add_months(d,i)
      • 3.3 日期转换
      • 3.4 获取日期时间
    • 4、聚合类函数

一、Oracle常用的系统函数

1、字符串函数:处理字符的函数

1.1 ASCII©函数和CHR(i)函数

ASCII©: 返回一个字符的ASCII码,其中c表示一个字符;

CHR(i): 返回给出ASCII码值所对应的字符,i表示一个ASCII码值。

案例1:分别求得字符’D’,'Y’和空格的ASCII值

select ascii('D') D,ascii('Y') Y,ascii(' ') kg from dual;

	 D	    Y	      KG
---------- ---------- ----------
	68	   89	      32

案例2:求得ASCII码值89和68对应的字符。

select CHR(89),CHR(68) from dual;

输出:

C C
- -
Y D

说明: dual表示Oracle系统内部提供的一个用于实现临时数据计算的特殊表,它只有一个列DUMMY,类型VARCHAR2(1)

1.2 CONCAT(s1,s2)函数

该函数将字符串s2连接到s1后面,如果s1为null,则返回s2; 如果s2为null,则返回s1;都为null,结果返回null。

案例:使用concat函数连接hello和world两个字符串

select concat('hello','world') from dual;

输出:

CONCAT('HE
----------
helloworld

1.3 initcap()函数

将单词第一个字母大写

Select INITCAP(‘hello’) from dual;

输出:

INITC
-----
Hello

例子:将雇员表中的雇员姓名变为开头字母大写。

 select initcap(ename) from emp;  --表的列不加引号

输出:

INITCAP(EN
----------
Smith
Allen
Ward
Jones
Martin
Blake
Clark
Scott
King
Turner
Adams
James
Ford
Miller

注:emp表下列值数据默认是大写,在使用initcap函数时,会把除了第一个字母全部小写。

1.4 instr(s1,s2,i,j)函数

该函数用于返回字符s2在字符串s1中第j次出现的位置。
说明:
搜索从字符串s1的第i个字符开始。当没有发现要查找到的字符时,返回0。
如果i为负数,搜索从右到左进行,但是函数返回的位置还是按从左到右来计算。s1和s2均为字符串,i和j为整数。

案例:在字符串‘Oracle 11g’中,从第三个字符开始查询字符串’1’第二次出现的位置

select instr('oracle 11g','1',3,2) abc from dual;

输出:

       ABC
----------
	 9

1.5 length(s)函数

该函数返回字符串的长度

Select length(‘hello’) from dual;

select length('hello') from dual;

输出:

LENGTH('HELLO')
---------------
	      5

案例:通过使用length函数返回雇员名称长度大于5的雇员的员工编号,姓名以及所在的部门

select emp.empno,ename,dept.dname
from emp inner join dept
on emp.deptno=dept.deptno
where length(emp.ename)>5;

输出:

     EMPNO ENAME      DNAME
---------- ---------- --------------
      7654 MARTIN     SALES
      7844 TURNER     SALES
      7934 MILLER     ACCOUNTING

1.6 LOWER(s)函数和UPPER(s)函数

lower()函数将字符串变为小写字母
Select LOWER(‘HELLO WORLD’) from dual;

upper()函数将字符串变为大写字母
Select upper(‘hello world’) from dual;

练习:查询emp表中的员工姓名,全部小写显示。

select lower(ename) from emp;

1.7 replace(s1,s2,s3)函数

该函数使用s3字符串替换出现s1字符串中所有s2的字符串,并返回新的字符串。

select replace(' bad girl bad luck',‘ bad', 'good') from dual;

输出:

REPLACE('BADGIRLBAD
-------------------
good girl good luck

1.8 substr(s,i,[j])函数

该函数表示从字符串s的第i个位置开始截取长度为j的子字符串
案例:截取‘MessageBox’中从第8个位置截取长度为3的子字符串

select substr('MessageBox',8,3) from dual;

输出:

SUB
---
box

若不写第三个参数,默认字符串的截取从开始位置到字符串结束

select substr('MessageBox',5) from dual;

输出:

SUBSTR
------
agebox

1.9 nvl(表达式1,表达式2)

如果表达式1为null,则返回表达式2的值

select nvl(comm, 11) from emp;

输出:

NVL(COMM,11)
------------
	  11
	 300
	 500
	  11
	1400
	  11
	  11
	  11
	  11
	   0
	  11
	  11
	  11
	  11

2、数字类函数

数字类函数主要用于执行各种数据的计算。

2.1 ABS(n)

返回n的绝对值

select ABS(-8) from dual;

2.2 ROUND(n1,n2)函数

该函数返回四舍五入小数点n2位的n1值,n1是小数。

案例1:返回PI的两位小数值

select round(3.1415926,3) from dual;

返回:

ROUND(3.1415926,3)
------------------
	     3.142

案例2:

select round(sal/20,2) from emp;

返回:

ROUND(SAL/20,2)
---------------
	     40
	     80
	   62.5
	 148.75
	   62.5
	  142.5
	  122.5
	    150
	    250
	     75
	     55
	   47.5
	    150
	     65

拓展: ceil, floor

2.3 POWER(n,m)函数

返回n的m次方,其中n和m都为实数

案例:计算2的3次方

select power(2,3) from dual;

3、日期和时间类函数

3.1 sysdate表示当前日期

select sysdate() as 系统日期 from dual;

3.2 add_months(d,i)

在指定日期d上加上指定月数i,求出之后的日期

案例:在当前的日期下加上6个月,并显示值

select ADD_MONTHS(sysdate,6) from dual;

3.3 日期转换

select to_date('2012-02-16','yyyy-mm-dd ') from dual;

3.4 获取日期时间

select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual;

4、聚合类函数

• AVG(列名):求平均值
• SUM(列名):求和
• MAX(列名):求最大值
• MIN(列名):求最小值
• COUNT(列名):求查询结果中的记录数

案例:计算员工总数,使用avg计算工资,结果保留两位小数

select count(empno),round(avg(sal),2) from emp;

输出:

COUNT(EMPNO) ROUND(AVG(SAL),2)
------------ -----------------
	  14	       2073.21

热门文章

暂无图片
编程学习 ·

C语言二分查找详解

二分查找是一种知名度很高的查找算法,在对有序数列进行查找时效率远高于传统的顺序查找。 下面这张动图对比了二者的效率差距。 二分查找的基本思想就是通过把目标数和当前数列的中间数进行比较,从而确定目标数是在中间数的左边还是右边,将查…
暂无图片
编程学习 ·

GMX 命令分类列表

建模和计算操作命令: 1.1 . 创建拓扑与坐标文件 gmx editconf - 编辑模拟盒子以及写入子组(subgroups) gmx protonate - 结构质子化 gmx x2top - 根据坐标生成原始拓扑文件 gmx solvate - 体系溶剂化 gmx insert-molecules - 将分子插入已有空位 gmx genconf - 增加…
暂无图片
编程学习 ·

一文高效回顾研究生课程《数值分析》重点

数值分析这门课的本质就是用离散的已知点去估计整体,就是由黑盒子产生的结果去估计这个黑盒子。在数学里这个黑盒子就是一个函数嘛,这门课会介绍许多方法去利用离散点最大化地逼近这个函数,甚至它的导数、积分,甚至微分方程的解。…
暂无图片
编程学习 ·

在职阿里5年,一个28岁女软测工程师的心声

简单的先说一下,坐标杭州,14届本科毕业,算上年前在阿里巴巴的面试,一共有面试了有6家公司(因为不想请假,因此只是每个晚上去其他公司面试,所以面试的公司比较少) ​ 编辑切换为居中…
暂无图片
编程学习 ·

字符串左旋c语言

目录 题目: 解题思路: 第一步: 第二步: 第三步: 总代码: 题目: 实现一个函数,可以左旋字符串中的k个字符。 例如: ABCD左旋一个字符得到BCDA ABCD左旋两个字符…
暂无图片
编程学习 ·

设计模式--观察者模式笔记

模式的定义与特点 观察者(Observer)模式的定义:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式&#xf…
暂无图片
编程学习 ·

睡觉突然身体动不了,什么是睡眠痽痪症

很多朋友可能有这样的体验,睡觉过程中突然意识清醒,身体却动弹不了。这时候感觉非常恐怖,希望旁边有一个人推自己一下。阳光以前也经常会碰到这样的情况,一年有一百多次,那时候很害怕晚上到来,睡觉了就会出…
暂无图片
编程学习 ·

深入理解C++智能指针——浅析MSVC源码

文章目录unique_ptrshared_ptr 与 weak_ptrstd::bad_weak_ptr 异常std::enable_shared_from_thisunique_ptr unique_ptr 是一个只移型别(move-only type,只移型别还有std::mutex等)。 结合一下工厂模式,看看其基本用法&#xff…
暂无图片
编程学习 ·

@TableField(exist = false)

TableField(exist false) //申明此字段不在数据库存在,但代码中需要用到它,通知Mybatis-plus在做写库操作是忽略它。,.
暂无图片
编程学习 ·

Java Web day15

第十二章文件上传和下载 一、如何实现文件上传 要实现Web开发中的文件上传功能,通常需要完成两步操作:一.是在Web页面中添加上传输入项;二是在Servlet中读取上传文件的数据,并保存到本地硬盘中。 需要使用一个Apache组织提供一个…
暂无图片
编程学习 ·

【51nod 2478】【单调栈】【前缀和】小b接水

小b接水题目解题思路Code51nod 2478 小b接水 题目 输入样例 12 0 1 0 2 1 0 1 3 2 1 2 1输出样例 6解题思路 可以发现最后能拦住水的都是向两边递减高度(?) 不管两个高积木之间的的积木是怎样乱七八糟的高度,最后能用来装水的…
暂无图片
编程学习 ·

花了大半天写了一个UVC扩展单元调试工具

基于DIRECTSHOW 实现的,用的是MFC VS2019. 详见:http://www.usbzh.com/article/detail-761.html 获取方法 加QQ群:952873936,然后在群文件\USB调试工具&测试软件\UVCXU-V1.0(UVC扩展单元调试工具-USB中文网官方版).exe USB中文网 USB中文…
暂无图片
编程学习 ·

贪心(一):区间问题、Huffman树

区间问题 例题一:区间选点 给定 N 个闭区间 [ai,bi]请你在数轴上选择尽量少的点,使得每个区间内至少包含一个选出的点。 输出选择的点的最小数量。 位于区间端点上的点也算作区间内。 输入格式 第一行包含整数 N,表示区间数。 接下来 …
暂无图片
编程学习 ·

C语言练习实例——费氏数列

目录 题目 解法 输出结果 题目 Fibonacci为1200年代的欧洲数学家,在他的着作中曾经提到:「若有一只免子每个月生一只小免子,一个月后小免子也开始生产。起初只有一只免子,一个月后就有两只免子,二个月后有三只免子…
暂无图片
编程学习 ·

Android开发(2): Android 资源

个人笔记整理 Android 资源 Android中的资源,一般分为两类: 系统内置资源:Android SDK中所提供的已经定义好的资源,用户可以直接拿来使用。 用户自定义资源:用户自己定义或引入的,只适用于当前应用的资源…
暂无图片
编程学习 ·

零基础如何在短时间内拿到算法offer

​算法工程师是利用算法处理事物的职业 算法(Algorithm)是一系列解决问题的清晰指令,也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。 如果一个算法有缺陷,或不适合于某个问题,执…
暂无图片
编程学习 ·

人工智能:知识图谱实战总结

人工智能python,NLP,知识图谱,机器学习,深度学习人工智能:知识图谱实战前言一、实体建模工具Protegepython,NLP,知识图谱,机器学习,深度学习 人工智能:知识图…
暂无图片
编程学习 ·

【无标题】

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注…