3.使用单行函数——Oracle数据库学习日记
使用单行函数
函数是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数据库学习日记相关推荐
- Oracle数据库学习:PL/SQL(详解)
Oracle数据库学习:PL/SQL 什么是PL/SQL PL/SQL 是过程语言(Procedural Language)与结构化查询语言(SQL)结合而成的扩展语言; 使用PL/SQL 可以编写具 ...
- oracle数据库学习小记一
oracle数据库学习小记 数据库函数 一.日常函数 二.数学函数 三.聚合函数(常用于group by从句的select查询中) 四.字符串函数 五.日期和时间函数 六.加密函数 七.控制流函数 八 ...
- oracle权限培训,Java培训-ORACLE数据库学习【2】用户权限
查询用户拥有的权限: 1.查看所有用户:select *from dba_users;select *from all_users;select *from user_users; 2.查看用户或角色 ...
- oracle修改分区表的默认空间,Oracle数据库学习_Oracle分区表的分区占用空间为什么是8M?如何修改分区的初始空间?...
Oracle数据库学习_Oracle分区表的分区占用空间为什么是8M?如何修改分区的初始空间? 现象一描述: 在oracle12c下创建一个分区表T_A_TRADING,新建一个分区P1,P1里没有任 ...
- Oracle 数据库学习
目录 Oracle 数据库学习 1. Oracle数据库 1.1 简介 1.2权限分类: 2. 用户管理 2.1用户操作 2.2表操作 2.3关闭数据库 2.4其他操作 3. Oracle 重要文件 ...
- oracle查看时间戳函数,oracle数据库实现获取时间戳的无参函数
oracle数据库实现获取时间戳的无参函数 代码如下所示: CREATE OR REPLACE FUNCTION GETMSTIMESTAMP RETURN NUMBER AS MSTIMESTAMP ...
- oracle数据库学习(自用)
sqlplus的使用: 开启相关服务–sqlplus 用户名/口令 as sysdba --show user --用户切换 SQL的组成: DQL,DDL,DML,DCL 表的创建: create ...
- oracle数据库学习总结
前言 这是本人复习兼学习两周oracle数据库后整理的一些知识,适合查询oracle的一些语法,也可以当作一个oracle数据库的知识架构梳理. 鉴于数据库语法繁琐,知识点繁多,还有很多知识点没有纳入 ...
- Oracle数据库学习的第二天(Oracle的简单操作)
一.SQL92/[99]标准的四大分类 DML(数据操纵语言):select,insert,update,delete DDL(数据定义语言):create table,alter table,dro ...
最新文章
- Hinton,Lecun和Bengio三巨头联手再发万字长文:深度学习的昨天、今天和明天
- python第三方库numpy-Python中的第三方库——Numpy
- 051_Array对象
- redis入门(02)redis的常见问题
- SAP UI5 初学者教程之二十七 - SAP UI5 应用的单元测试工具 QUnit 介绍试读版
- 2017(深圳) .NET技术分享交流会 第二期,将有网络直播
- 中科大软件测试期末复习
- CCAI 2017 | 小数据学习对人工智能究竟有着怎样的影响?
- Beacon Mountain 测试版 – 常见问题解答
- git 远程代码被覆盖
- Pytorch完成线性回归
- 学长们的求职血泪史(C/C++/JAVA)
- IEnumerable,IQueryable之前世今生
- LeetCode 144. Binary Tree Preorder Traversal 20170706
- Oracle Crystal ball 11.1.* 注册码
- 计算机设计大赛作品开发文档
- [深度学习论文笔记]3D AGSE-VNet: An Automatic Brain Tumor MRI Data Segmentation Framework
- 国科大学习资料–模式识别--精练考点
- 《C Primer Plus第六版》第六章复习题目和编程练习题的答案
- 光源专家的8个打光技巧