欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Oracle的单行函数的类型、用途以及简单演示

程序员文章站 2022-05-07 08:02:12
...

单行函数

所谓单行函数指的是完成某一具体功能的操作,例如:转为大小写,仅开头大写,其余小写或者进行转换日期数字等等;
一般而言,单行函数的格式都是: “ 返回值 函数名称(参数)”。

以下内容写的相对啰嗦请见谅,如果只想知道各函数作用可仅看表格内容即可;

本人使用的Oracle版本是11g

  • 单行函数按照类型分类一共可以分为以下几种:字符串函数、数字函数、日期函数、转换函数、通用函数

字符串函数

函数名称(名称前为返回值类型) 描述
字符串 UPPER(列 | 字符串) 将传入的字符串变为大写字母形式
字符串 LOWER(列 | 字符串) 将传入的字符串变为小写字母形式
字符串 INITCAP(列 | 字符串) 开头首字母大写,其它字母全部变为小写
数字 LENGTH(列 | 字符串) 取得指定字符串的长度
字符串 SUBSTR(列 | 字符串,开始索引,[长度]) 对字符串的截取,如果不给出后面的长度,则会从开始索引的位置截取到最后
字符串 REPLACE(列 | 字符串,旧内容,新内容) 将指定字符串的数据替换为新数据
  • 范例UPPER()
    • Oracle提供了一个叫dual的虚拟表供我们进行验证测试或者查询一些不需要查询表的操作。
SELECT UPPER('hello') FROM dual;

SQL语句指将dual虚拟表中hello变为大写形式
Oracle的单行函数的类型、用途以及简单演示

  • 范例LOWER()
SELECT LOWER(ename) ,ename FROM emp;

SQL语句指将emp表中ename字段的记录变为小写形式
Oracle的单行函数的类型、用途以及简单演示

  • 范例INITCAP()
SELECT ename, INITCAP(ename) FROM emp;

SQL语句指将emp表中ename字段的记录变为首字母大写其余小写形式
Oracle的单行函数的类型、用途以及简单演示

  • 范例LENGTH()
SELECT * FROM emp WHERE LENGTH(ename)=5;

SQL语句指从emp表中得到所有字段ename长度为5的记录
Oracle的单行函数的类型、用途以及简单演示

  • 范例SUBSTR()

不给定截取长度

SELECT SUBSTR('helloworld', 6) FROM dual;

SQL语句指将’helloworld‘字段从第六个字符开始截取(Oracle字符串索引从1开始,如果写为0也会按1进行处理)
Oracle的单行函数的类型、用途以及简单演示

给定截取长度

SELECT SUBSTR('helloworld', 6, 3) FROM dual;

SQL语句指将’helloworld‘字段从第六个字符开始截取,截取长度为3个字符
Oracle的单行函数的类型、用途以及简单演示

  • 范例SUBSTR()取倒数,比如取后三位
SELECT ename, SUBSTR(ename, -3) FROM emp;

SQL语句指截取ename字段的记录的后三位;
Oracle的单行函数的类型、用途以及简单演示

----------------------------------------------------------------------------------------------------------

数值函数

函数名称 描述
数字 ROUND(列 | 数字 [ , 小数位]) 实现数据的四舍五入,可以设置保留小数位
数字 TRUNC(列 | 数字 [ , 小数位]) 实现数据的截取,即不进位
数字 MOD(列 | 数字, 列| 数字 ) 求模(计算余数)
  • 范例ROUND() 默认四舍五入不保留小数位
SELECT ROUND(789.54645654) FROM dual;
SELECT ROUND(789.54645654 , 2) FROM dual;

Oracle的单行函数的类型、用途以及简单演示

  • 范例TRUNC()不进行四舍五入
SELECT TRUNC(54.899965),TRUNC(54.899965, 2), TRUNC(54.899965, -1) FROM dual;

Oracle的单行函数的类型、用途以及简单演示

  • 范例MOD()
SELECT MOD(10, 3)FROM dual;

Oracle的单行函数的类型、用途以及简单演示

日期函数

如果要处理日期,那么必须有一个前提,必须知道当前日期,在ORACLE里专门提供了一个伪列“SYSDATE”(SYSTIMESTAMP 时间戳);

函数名称 描述
日期 ADD_MONTHS(列| 日期, 月数) 在指定的日期上增加若干个月后的日期
数字 MONTHS_BETWEEN(列| 日期,列|日期) 返回两个日期之间的所经历的月数
日期 LAST_DAY(列|日期) 取得指定日期所在月的最后一天
日期 NEXT_DAY(列|日期,星期x) 返回下一个指定的一周时间数对应的日期
  • 范例ADD_MONTHS()
SELECT ADD_MONTHS(SYSDATE,4),ADD_MONTHS(SYSDATE,20)FROM dual;

语句表示SYSDATE增加4个月后的日期,以及增加20个月后的日期
Oracle的单行函数的类型、用途以及简单演示

  • 范例MONTHS_BETWEEN()
SELECT MONTHS_BETWEEN(SYSDATE, hiredate) months FROM emp;

Oracle的单行函数的类型、用途以及简单演示

较难综合使用:计算例子表emp中日期距离现在过了多少年,多少月,多少天) 可以自行斟酌一下SQL语句如何写,其余日期函数

转换函数

负责将数字型、字符型、日期型数据进行转换的函数

函数名称 描述
字符串 TO_CHAR(列|日期|数字, 转换格式) 将日期或数字转换为指定格式的字符串
日期 TO_DATE(列|字符串, 转换格式) 将字符串转换为指定格式的日期
数字 TO_NUMBER(列|字符串) 将字符串转换为数字
  • 范例TO_CHAR()
SELECT TO_CHAR(SYSDATE, 'yyyy-mm-dd HH:MI:SS') FROM dual;
SELECT TO_CHAR(SYSDATE, 'yyyy-mm-dd HH24:MI:SS') FROM dual;

Oracle的单行函数的类型、用途以及简单演示

通用函数

通用函数一般指的是ORACLE特色函数,主要又两个通用函数。

函数名称 描述
数字 NVL(列| NULL, 默认值) 如果传入的内容是null,则使用默认数值处理,如果不是空则使用原始数值处理。
数据类型 DECODE(列|字符串|数值, 比较内容1,显示内容1,比较内容2, 显示内容2, …[, 默认显示内容]) 设置的内容会与每一个比较内容进行比较,如果内容相同,则会使用显示内容进行输出,如果都不相同,则使用最后的默认信息输出。
  • 范例NVL()
SELECT COMM, NVL(COMM, 0) FROM emp;

Oracle的单行函数的类型、用途以及简单演示

  • 范例DECONDE()
SELECT ename,job,DECODE(job, 'CLERK', '办事员','SALESMAN','销售','PRESIDENT','总裁','默认显示内容') FROM emp;

Oracle的单行函数的类型、用途以及简单演示

可见,DECODE函数的用法就是将指定的列中与比较值进行比较,如果符合比较值就会显示对应比较值后面的显示值,如果没有符合比较值,就会显示默认值,如果不给出默认值就会显示为空

以上是本人一些简单的认识,如果有纰漏,麻烦指出,不喜勿喷,谢谢