SQL学习之函数,基于Oracle下的HR用户(一)

3.1.1 什么是函数
函数:是数据库产品中提供的能够处理查询结果的方法。函数能够用于下面的目的:
• 执行数据计算
• 修改单个数据项
• 格式化显示的日期和数字
• 转换列数据类型
• 函数有输入参数,并且总有一个返回值。
3.1.2 函数类型
单行函数:这些函数仅对单个行进行运算,并且每行返回一个结果。
多行函数(聚合函数):这些函数能够操纵成组的行,每个行组给出一个结果,这些函数也被称为组函数。
在这里插入图片描述
3.1.3 函数语法
function_name(arg1,arg2,…)
function_name:是函数的名字。
arg1, arg2:是由函数使用的任意参数。参数可以是一个列名、用户提供的常数、变量值、或者一个表达式。
3.2 单行函数
3.2.1 单行函数的特性包括:
• 作用于每一个返回行,每行返回一个结果
• 可能需要一个或多个参数
• 可以修改结果集的数据类型
• 可以嵌套
• 可能返回一个与参数不同类型的数据值
• 能够用在 SELECT、WHERE 和 ORDER BY 子句中
3.2.2 单行函数分类
字符函数:接受字符输入,可以返回字符或者数字值
数字函数:接受数字输入,返回数字值
日期函数:对 DATE 数据类型的值进行运算 (除MONTHS_BETWEEN 函数返回一个数字,所有日期函数都返回一个 DATE 数据类型的值。)
转换函数:从一个数据类型到另一个数据类型转换一个值
通用函数:
− NVL
− NVL2 − NULLIF − COALSECE
− CASE
− DECODE
3.3 字符函数
字符函数:单行字符函数接受字符数据作为输入,既可以返回字符值也可以返回数字值。
3.3.1 字符函数分类
• 大小写处理函数
• 字符处理函数

大小写处理函数结果含义
lower(‘SQL Course’)sql course将字符串转换为小写
upper(‘SQL course’)SQL COURSE将字符转换为大写
initcap(‘SQL Course’)Sql Course将单词首字母转换成大写

3.3.3 示例一

查询员工表,使用 “ The Job id for ”链接转换大写格式后的员工姓名,并使用“ is ” 字符串链接他们工作 ID ,要求将工作 ID 转换小写格式。修改列名为“ EMPLOYEE DETAILS”。
select ' The job id for'||upper(last_name)||'is'|| lower(job_id) "EMPLOYEE DETAILS" from employees;

在这里插入图片描述

3.3.4 示例二

显示雇员 higgins 的雇员号、姓名和部门号
select employee_id,last_name,department_id from employees where last_name = initcap('higgins');

在这里插入图片描述3.4 字符处理函数
dual 表:dual 是一张只有一个字段,一行记录的表。dual 表也称之为’伪表’,因为他不存储主题数据。如果我们不需要从具体的表来取得表中数据,而是单纯地为了得到一些我们想得到的信息,并要通过 select 完成时,就要借助 dual 表来满足结构化查询语言的格式。

函数结果说明
concat(‘hello’,‘Word’)helloWord两个字符串连接
substr(‘HelloWord’,1,5)Hello根据指定参数截取字符串
length(‘helloword’)10计算字符串长度
instr(‘helloword’,‘w’)6返回指定字符的位置
lpad(salary, 10 , ‘*’)*****24000按指定参数在字符串前面添加指定字符
rpad(salary, 10, ‘*’)24000*****按指定参数在字符串后面添加指定字符
trim(‘H’ from ‘Hello Word’)elloWord去掉指定字符

CONCAT(arg1,arg2):连接值在一起 (CONCAT 函数有两个输入参数)
arg1:字符串类型。字符拼接的值。
arg2:字符串类型。字符拼接的值。
在这里插入图片描述
SUBSTR(arg1,arg2,arg3):截取子串。
arg1:字符串类型。原字符串,
arg2:整数类型。开始位置(开始位置可以是一个负数,-1 表示原串的最后一位,- 2 则表示倒是第二位以此类推),
arg3:整数类型。截取个数。
在这里插入图片描述
SUBSTR(arg1,arg2):截取子串。
arg1:字符串类型。原字符串。
arg2:开始位置(开始位置可以是一个负数,-1 表示原串的最后一位,-2 则表示倒是第二位以此类推)截取到末尾。
在这里插入图片描述
LENGTH(arg1):以数字值显示一个字符串的长度。
arg1:字符串类型。计算长度的字符串。
在这里插入图片描述

INSTR(arg1,arg2):找到一个给定字符的数字位置。
arg1:字符串类型。原字符串。
arg2:字符串类型。查找内容。
在这里插入图片描述

INSTR(arg1,arg2,arg3,arg4):指定查找位置以及出现的次数。
arg1:字符串类型。原字符串。
arg2:字符串类型。查找内容。
arg3:整数类型。开始位置。
arg4:整数类型。第几次出现。
在这里插入图片描述

LPAD(arg1,arg2,arg3):用给定的字符左填充字符串到给定的长
度。
arg1:字符串类型。原字符串。
arg2:整数类型。总长度。
arg3:字符串类型。填充的子字符串。
在这里插入图片描述

RPAD(arg1,arg2,arg3):用给定的字符右填充字符串到给定的长度。
arg1:字符串类型。原字符串。
arg2:整数类型。总长度。
arg3:字符串类型。填充的子字符串。
在这里插入图片描述

TRIM(arg1):从一个字符串中去除头(leading)或尾(trailing)或头尾两侧(both)的字符 (默认为头尾两侧) 如果 trim_character 或 trim_source 是一个文字字符,必须放在单引号中。
arg1 需要操作的字符串。FROM 为关键字。
格式 1:需要去掉的内容 FROM 原字符串
格式 2:leading|trailing|both 需要去掉的内容 FROM 原字符
串。

--去掉头尾两侧方法一:
select trim('H from HelloWorldH') from dual;
--去掉头尾两侧方法二:
select trim(both 'H' from 'HelloWorldH') from dual;
--去掉头:
select trim(leading 'H' from 'HelloWorldH') from dual;
--去掉尾:
select trim(trailing 'H' from 'HelloWorldH') from dual;

在这里插入图片描述

REPLACE(arg1,arg2,arg3):REPLACE 函数是用另外一个值来替代串中的某个值。
arg1:字符串类型。原字符串。
arg2:字符串类型。需要替换的子串。
arg3:字符串类型。替换的内容。
在这里插入图片描述

3.4.1 示例一

--显示所有工作岗位名称从第 4 个字符位置开始包含字符串 REP 的雇员的信息,将雇员的姓和名连接显示在一起,还显示雇员名的长度,以及名字中字母 a 的位置。
select concat(first_name,last_name),length(last_na me),instr(last_name,'a') from employees where substr(job_id,4)='REP';

在这里插入图片描述
3.4.2 示例二

--显示名字是以 n 结束的雇员的数据,将雇员的姓和名连接显示在一起,还显示雇员名的长度,以及名字中字母 a 的位置。
select concat(first_name,last_name),length(last_name),instr(last_name,'a') from employees where substr(last_name,-1)='n';

在这里插入图片描述

3.4.3 示例三

--将手机号中间四位用星号代替。
select replace('13622329860',substr('13622329860',4,4),'****') from dual;

在这里插入图片描述3.5 数字函数

函数结果说明
round(45.926,2)45.93四舍五入指定小数的值
trunc(45.926,2)45.92截取小数点后的位数,不做四舍五入处理
mod(1600,300)100取余

ROUND(arg1,arg2):四舍五入指定小数的值。
arg1:数字类型。原数字。
arg2:整数类型。小数点保留的位数,可以是一个负数。负数则表示指定整数的位置。
在这里插入图片描述
ROUND(arg1):四舍五入保留整数。
arg1:数字类型。原数字。
arg2:整数类型。小数点保留的位数。
在这里插入图片描述

TRUNC(arg1,arg2):截断指定小数的值,不做四舍五入处理。
arg1:数字类型。原数字。
arg2:整数类型。小数点保留的位数,可以使一个负数。负数则表示指定整数的位置。
在这里插入图片描述
TRUNC(arg1):四舍五入保留整数。
arg1:数字类型。原数字。
arg2:整数
类型。小数点保留的位数。
在这里插入图片描述

MOD(arg1,arg2):取余。
arg1:数字类型。被除数。
arg2:数字类型。除数。
在这里插入图片描述

3.5.1 示例一

计算所有是销售代表(SA_REP)的雇员的工资被 5000 除后的余数。
select last_name,salary,mod(salary,5000)
from employees where job_id ='SA_REP';

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值