使用单行函数

函数是SQL的一个非常强大的特性,它可以用来做以下事情:

  • 对数据进行计算
  • 修改单个数据项
  • 操作行组的输出
  • 格式化显示日期和数字
  • 转换列数据类型

函数分单行函数的多行函数,单行函数用于操作数据项。他们接受一个或多个参数,并为查询返回的每一行返回一个值。可以是下列之一:

  • 用户提供的值
  • 变量值
  • 列名
  • 表达式

单行函数的特点包括:

  • 对查询中返回的每一行执行操作
  • 每行返回一个结果
  • 可能返回与引用的数据类型不同的数据值
  • 可能需要一个或多个参数
  • 可用于SELECT,WHERE,and ORDER BY子句;可以嵌套

单行函数类型:

  • 字符
  • 数值
  • 日期
  • 转换
  • 通用

1、字符函数

1.1大小写转换函数

这些函数转换字符串的大小写:

函数 结果 作用
LOWER(‘SQL COURSE’) sql course 转换成小写
UPPER(‘sql course’) SQL COURSE 转换成大写
INITCAP(‘SQL COURSE’) Sql Course 首字母大写

实例

select initcap(ename),lower(job),upper(mgt)from emp
where ename='KING';

1.2字符控制函数

这些函数处理字符串:

函数 结果 含义
CONCAT(‘Hello’,‘World’) HelloWorld 将值连接在一起(使用CONCAT只能使用两个参数)
SUBSTR(‘HelloWorld’,1,5) hello 取一个确定长度的字符串
LENGTH(‘Hello World’) 10 取字符串的长度显示为数值
INSTR(‘HelloWorld’,‘W’) 6 查找指定字符的数字位置
LAPD(salary,10,’*’) *****24000 使用字符表达式返回左填充到n个字符长度的表达式
RAPD(salary,10,’*’) 24000***** 使用字符表达式返回右填充到n个字符长度的表达式
REPLACE(‘JACK and JUE’,‘J’,‘BL’) BLACK and BLUE 查找字符,并进行替换字符
TRIM(’ ’ FROM ‘xxxHello Worldxxx’) HelloWorld 从字符串中修剪开头或结尾的字段

实例
CONCAT:

select concat('good','dba') from dual;select concat(concat(ename,'is'),job)from emp;

SUBSTR:

select substr('oracle',1,3)from dual;

LENGTH:

select length('oracle')from dual;

INSTR:

select instr('oracle','a')from dual;  # instr经常被用来判断,判断一个字符串是否在另一个字符串中select instr('1*2*3*4*5*','*',3,4)from dual;  # 查询从第3个字符开始,*第4次出现的位置select instr('1*2*3*4*5*','*',-3,2)from dual;  # 查询从倒数第3个字符开始向前,*第2次出现的位置

LPAD,RPAD:

select sal,lpad(sal,4,0),rpad(sal,4,0)from emp;

TRIM:

select trim(' hello  ' )from dual;select length('  hello  '),length(trim(' hello   '))from dual;

2、数值函数

以下函数为处理数值的函数:

函数 结果 含义
ROUND(45.926,2) 45.93 四舍五入到指定的的十进制值
TRUNC(45.926,2) 45.92 截断到指定十进制值
MOD(1600,300) 100 返回余数

ROUND:

SQL> select round(45.923,2),round(45.923,0),round(45.923,-1)2     from dual;ROUND(45.923,2) ROUND(45.923,0) ROUND(45.923,-1)
--------------- --------------- ----------------45.92              46               50

TRUNC:

SQL> select trunc(45.923,2),trunc(45.923),trunc(45.923,-1)2     from dual;TRUNC(45.923,2) TRUNC(45.923) TRUNC(45.923,-1)
--------------- ------------- ----------------45.92            45               40

MOD:

SQL> select mod(1600,300)2     from dual;MOD(1600,300)
-------------100

3.日期函数

3.1使用日期

  • Oracle内部使用的数字存储日期:世纪、年、月、日、小时
  • 默认的日期显示格式为DD-MON-RR

修改当前session日期格式

SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss day';
Session altered.
SQL> select sysdate2     from dual;
SYSDATE
-----------------------------
2019-07-20 09:45:01 saturday

日期的算数运算:

命令 结果 含义
date ± number Date 在日期上加上或减去一个数字,结果仍为日期
date - date Number of days 两个日期相减返回日期之间的相差天数
date + number/24 Date 可以用小时数除以24,可以加小时到日期上

因为数据库将日期存储为数字,所以可以使用加法和减法等算数运算符执行计算,你可以加减数字常数和日期
实例

SQL> select ename,(sysdate-hiredate)/365 as year2     from emp;ENAME            YEAR
---------- ----------
SMITH      38.6148401
ALLEN      38.4367579
WARD       38.4312784

3.2日期操作函数

函数 含义
SYSDATE 查看当前系统日期时间
MONTHS_BETWEEN 两个日期相差的月数
ADD_MONTHS 向指定日期中添加若干月数
NEXT_DAY 指向日期的下一个日期
LAST_DAY 本月的最后一天
ROUND 日期四舍五入
TRUNC 日期截断

SYSDATE:

SQL> SELECT SYSDATE2     FROM DUAL;SYSDATE
-----------------------------
2019-07-20 10:09:06 saturday

MONTHS_BETWEEN:

SQL> select ename,months_between(sysdate,hiredate)/12 as year2     from emp;ENAME            YEAR
---------- ----------
SMITH      38.5925309
ALLEN      38.4166667
WARD       38.4124233

ADD_MONTHS:

select sysdate,add_months(sysdate,1) from dual;     # 一个月后的现在
select sysdate,add_months(sysdate,12) from dual:        # 一年后
select sysdate,add_months(sysdate,-12) from dual;       # 一年前

NEXT_DAY:

select next_day(sysdate,'MONDAY') from dual;        # 下周一(当前时间)
select next_day(sysdate,2) from dual;       # 下周第二天——下周一(周日为第一天)

LAST_DAY:

select sysdate,last_day(sysdate) from dual;

ROUND:

select sysdate,round(sysdate) from dual;
select sysdate,round(sysdate,'mi') from dual;
select sysdate,round(sysdate,'DD') from dual;

TRUNC:

select sysdate,trunc(sysdate) from dual;        今天
select sysdate,trunc(sysdate,'dd') from dual;       零点
select sysdate,trunc(sysdate,'mm') from dual;       本月的第一天
select sysdate,trunc(sysdate,'yyyy') from dual;     今年的第一天

3.使用单行函数——Oracle数据库学习日记相关推荐

  1. Oracle数据库学习:PL/SQL(详解)

    Oracle数据库学习:PL/SQL 什么是PL/SQL PL/SQL 是过程语言(Procedural Language)与结构化查询语言(SQL)结合而成的扩展语言; 使用PL/SQL 可以编写具 ...

  2. oracle数据库学习小记一

    oracle数据库学习小记 数据库函数 一.日常函数 二.数学函数 三.聚合函数(常用于group by从句的select查询中) 四.字符串函数 五.日期和时间函数 六.加密函数 七.控制流函数 八 ...

  3. oracle权限培训,Java培训-ORACLE数据库学习【2】用户权限

    查询用户拥有的权限: 1.查看所有用户:select *from dba_users;select *from all_users;select *from user_users; 2.查看用户或角色 ...

  4. oracle修改分区表的默认空间,Oracle数据库学习_Oracle分区表的分区占用空间为什么是8M?如何修改分区的初始空间?...

    Oracle数据库学习_Oracle分区表的分区占用空间为什么是8M?如何修改分区的初始空间? 现象一描述: 在oracle12c下创建一个分区表T_A_TRADING,新建一个分区P1,P1里没有任 ...

  5. Oracle 数据库学习

    目录 Oracle 数据库学习 1. Oracle数据库 1.1 简介 1.2权限分类: 2. 用户管理 2.1用户操作 2.2表操作 2.3关闭数据库 2.4其他操作 3. Oracle 重要文件 ...

  6. oracle查看时间戳函数,oracle数据库实现获取时间戳的无参函数

    oracle数据库实现获取时间戳的无参函数 代码如下所示: CREATE OR REPLACE FUNCTION GETMSTIMESTAMP RETURN NUMBER AS MSTIMESTAMP ...

  7. oracle数据库学习(自用)

    sqlplus的使用: 开启相关服务–sqlplus 用户名/口令 as sysdba --show user --用户切换 SQL的组成: DQL,DDL,DML,DCL 表的创建: create ...

  8. oracle数据库学习总结

    前言 这是本人复习兼学习两周oracle数据库后整理的一些知识,适合查询oracle的一些语法,也可以当作一个oracle数据库的知识架构梳理. 鉴于数据库语法繁琐,知识点繁多,还有很多知识点没有纳入 ...

  9. Oracle数据库学习的第二天(Oracle的简单操作)

    一.SQL92/[99]标准的四大分类 DML(数据操纵语言):select,insert,update,delete DDL(数据定义语言):create table,alter table,dro ...

最新文章

  1. Hinton,Lecun和Bengio三巨头联手再发万字长文:深度学习的昨天、今天和明天
  2. python第三方库numpy-Python中的第三方库——Numpy
  3. 051_Array对象
  4. redis入门(02)redis的常见问题
  5. SAP UI5 初学者教程之二十七 - SAP UI5 应用的单元测试工具 QUnit 介绍试读版
  6. 2017(深圳) .NET技术分享交流会 第二期,将有网络直播
  7. 中科大软件测试期末复习
  8. CCAI 2017 | 小数据学习对人工智能究竟有着怎样的影响?
  9. Beacon Mountain 测试版 – 常见问题解答
  10. git 远程代码被覆盖
  11. Pytorch完成线性回归
  12. 学长们的求职血泪史(C/C++/JAVA)
  13. IEnumerable,IQueryable之前世今生
  14. LeetCode 144. Binary Tree Preorder Traversal 20170706
  15. Oracle Crystal ball 11.1.* 注册码
  16. 计算机设计大赛作品开发文档
  17. [深度学习论文笔记]3D AGSE-VNet: An Automatic Brain Tumor MRI Data Segmentation Framework
  18. 国科大学习资料–模式识别--精练考点
  19. 《C Primer Plus第六版》第六章复习题目和编程练习题的答案
  20. 光源专家的8个打光技巧

热门文章

  1. 安卓玩机搞机技巧综合资源------进入9008步骤 MTK端口 修改屏幕分辨率 如何刷写GSI镜像 等等【四】
  2. php实现购物车简单,一个简单的PHP购物车系统
  3. 哈理工计算机学院学生会技术部,大学学生会技术部工作总结
  4. FML翻译 2014.01.14
  5. javascript知识总汇
  6. Zookeeper 入门学习
  7. Web Design:欧美人形剪影的404界面
  8. 产品经理如何做好行业研究?
  9. 【深入理解】Python网络编程
  10. 【网络基础】网络是怎样连接的