1.3 数据库之单行函数

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lwz45698752/article/details/86408753


概述

  • 本章重点:条件语句和转化函数(格式符)

  • 单行函数:一行记录返回一个结果(类比单元函数),如员工的年工资

  • 多行函数:多行记录返回一个结果(类比多元函数),如公司的平均工资

在这里插入图片描述

字符函数

在这里插入图片描述

  • 分别为转化为小写,大写和单词首字母大写,其余字母小写

实例1

在这里插入图片描述

在这里插入图片描述

  • 以上适用于不知道King这个人名字拼写,索性直接全转化为大写

在这里插入图片描述

  • 连接,提取子串,长度,位置,固定位数(补左),固定位数(补右),去除指定字符,替代指定字符
  • LPAD:固定位数,用10位存数值信息,使用空格会更有效果(右对齐)
  • SQL的索引从1开始
  • INSTR不存在时输出0,类比Java输出-1(SQL索引从1开始,Java从0开始)
  • SUBSTR的第二个参数指输出的字符数
  • TRIM仅仅去除首尾的H,而REPALCE是替换全部的字符b

实例2

在这里插入图片描述


在这里插入图片描述

数字函数

在这里插入图片描述
在这里插入图片描述

  • round函数的第二个参数指定小数位数,-2表示从个位向前数来四舍五入
  • round默认四舍五入为一整数
  • trunc直接截断,不管四舍五入

日期函数

在这里插入图片描述

在这里插入图片描述

  • LAST_DAY操作数是date型,返回天数(不是小时)

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

  • 日期的四舍五入通过判断过半与否,如月份没过半,则舍去

自动类型转换

在这里插入图片描述

  • 关注上图中的转化关系(双向箭头)
  • SQL中连接不是+,而是||

在这里插入图片描述

  • 上图第一例显示date和number类型的自动转化
  • 第二例可见逗号默认表示一列

显式类型转换

在这里插入图片描述
在这里插入图片描述

  • 上例表示日期和字符串间转化(注释处为date——》字符串)
  • tochar的第二个参数指定转化的格式
  • 可将“-”替换为“/”,则输出结果也以“/”分隔
  • 认识标识符:其用来指定转换的格式

在这里插入图片描述


在这里插入图片描述

  • 上图的输出结果:
    在这里插入图片描述

  • 上例:在tochar方法的第二个参数中加入其他字符,如年月日,要用双引号括起来

特别字符

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 999表示数字,三个一set,中间逗号隔开,不足位数不补0
  • 不足位数需要补0,用000,否则999
  • 默认格式为保留到个位
  • “L”和“$”:前者表示本地货币,后者为美元
  • '123445’因为存储的是数字,不是汉字之类,本质上是数字型的字符
  • “L”和“$”在转化方法(如tochar方法)的两个参数中要一一对应,如前面是$12,则后面也是’$999’

在这里插入图片描述

  • 顺带提一句:解决了逗号表示列不能两者相加运算的问题

通用函数

在这里插入图片描述
在这里插入图片描述

  • expr看作输入行的某一列的信息

  • 判断列的对应值是否为空,解决空值表达式仍然为空(比如想让奖金率为空时,当成0来计算)的问题

  • 字符型数据但不是数字型字符,不能隐式转化

  • 单行函数间相互嵌套,从内到外计算

  • NVL是NVL2的特殊情况

在这里插入图片描述

  • NVL两个参数的数据类型应该相同,从而兼容
  • 若保留到个位,可以省略第二个格式参数,即tochar方法就一个参数就OK

条件表达式

在这里插入图片描述

case

在这里插入图片描述

  • case条件语句没有标点(有关键字来区分段落了)
  • case +要比较的列名
  • 可以起别名,作为新的列的名字
  • where限制遍历的表内容

Decode

在这里插入图片描述
在这里插入图片描述

  • decode方法的比较信息在括号内,不需要end, “)”即可表示end
  • decode方法没有关键字,要用逗号区分段落
  • decode方法的最后一行相当于else

练习

在这里插入图片描述

  • 1,234,567.89带逗号说明是char类型

在这里插入图片描述

  • 关注上图的有无特殊字符的两种情况

在这里插入图片描述

  • date型转化为字符型

在这里插入图片描述

在这里插入图片描述

  • 默认小数点后保留几位,使用round函数来保留一位

在这里插入图片描述

  • 上述通过连接符成为一列数据,然后起别名

使用decode函数,按照下面的条件:

job grade
AD_PRES A
ST_MAN B
IT_PROG C
SA_REP D
ST_CLERK E

产生下面的结果

Last_name Job_id Grade
king AD_PRES A

在这里插入图片描述

  • 若员工不在上述的五个部门,则表示else情况,但上式未写明,则输出的是null
  • grade本身是字符,用单引号括起来

在这里插入图片描述

  • 将上图的decode方式换为case方式实现条件语句

猜你喜欢

转载自blog.csdn.net/lwz45698752/article/details/86408753
1.3