单值函数

1.函数的分类
Oracle数据库中函数分为两类:
1)单值函数
n条数据经过函数处理得到n条结果
例如:查询所有员工last_name,并以全部大写形式输出
2)多值函数(组函数)
n条数据经过函数处理可能得到小于n条结果
例如:查询某班级每个小组的平均成绩。
假设某班级48名同学,8人一组分为6组。
计算小组平均成绩则需把每个小组的成绩相加除以小组人数。
最终,48条数据参与运算,结果只有6条。
多值函数计算时要使用group by根据某个字段值进行分组,
所以多值函数也称组函数。

2.哑表--dual
dual是Oracle数据库中的一张哑表(虚表、伪表)
哑表并非用来存储数据,所以本质上来讲不是一张真正意义的表。
哑表存在的意义仅仅是为了满足select基本语法结构。
我们在使用select语句计算或处理某些并不来源于某张表的数据时,
就可以使用哑表。
例如:使用select计算1+1:
select 1+1 from dual;
如上所述,1+1并不来源于某张特定的表,但是select又不能缺失from子句。
所以这时候可以使用哑表来补全查询语句结构。
特点:哑表中始终只有一条数据。

3.单值函数在字符串的应用
·LOWER函数 将字符串转换成全部小写形式
语法:lower(要转换的字符串)
查询所有员工的last_name,要求全部小写输出
select lower(last_name) from s_emp;
·UPPER函数 将字符串转换成全部大写形式
语法:upper(要转换的字符串)
查询所有员工的last_name,要求全部大写输出
select upper(last_name) from s_emp;
·INITCAP函数 转换成每个单词首字母大写,其余字母小写的形式

语法:initcap(要转换的字符串)

查询所有员工的last_name,要求首字母大写,其余字母小写。

select initcap(last_name) from s_emp;

·CONCAT函数 拼接字符串
该函数效果类似||
语法:concat(串1,串2)
注意:Oracle中的concat函数只能有两个参数,
如果需要拼接多个字符串,则需要嵌套使用。
例如:
将'I'、'LOVE'、'CHINA'拼接成一个字符串
concat(concat('I','LOVE'),'CHINA')
或者concat('I',concat('LOVE','CHINA'))
如果使用||的话可以直接'I'||'LOVE'||'CHINA'
*Mysql数据库中可以concat('I','LOVE','CHINA')
·SUBSTR 函数 求子串
String.substring(int beginIndex,int endIndex);
语法:substr(字符串,开始位置,长度)
字符索引值从1开始
例如:
'Hello world!'
substr('Hello World',3,5);

·LENGTH 函数 求字符串的长度
语法:length(字符串)
查询所有员工的last_name的长度?
select length(last_name) from s_emp;
·NVL函数 处理空值
语法:nvl(要处理的字段,默认值)
如果查到的字段值不为空,则取该字段值
如果为空,则取默认值

4.单值函数在数字的应用
·round函数 四舍五入
执行下列SQL命令,并观察规律:
select round(45.67,0) from dual; //46
select round(45.67,1) from dual; //45.7
select round(45.67,2) from dual; //45.67
select round(45.67,-1) from dual; //50
select round(45.67,-2) from dual; //0
select round(55.67,-2) from dual; //100
如果只写一个参数,代表默认保留到个位,即round(45.67,0)
第二个参数代表保留到个位旁边的第几位。
负数向左数,正数向右数。
·trunc函数 只舍不取
执行下列SQL命令,并观察规律:
select trunc(45.67,0) from dual; //45
select trunc(45.67,1) from dual; //45.6
select trunc(45.67,2) from dual; //45.67
select trunc(45.67,-1) from dual; //40
select trunc(45.67,-2) from dual; //0
select trunc(55.67,-2) from dual; //0
·mod函数 取余
计算1600/300的余数?
语法:mod(被除数,除数)
select mod(1600,300)
from dual;
结果:100

5.单值函数在日期上的应用
·MONTHS_BETWEEN 函数 计算两个日期间隔了的月数
查询2008年8月8号,距现在多少个月?
语法:months_between(日期1,日期2)
select months_between(sysdate,'09-8月-2008')
from dual;
·ADD_MONTHS函数 一个日期加上几个月之后的日期
语法:add_months(日期,月数)
查询现在的日期加上三个月?
select add_months(sysdate,3)
from dual;
·NEXT_DAY函数 查询某个日期之后的下一个星期几是几号?
语法:next_day(日期,星期几)
“星期几”有两种表达方式:
1)星期的名字
查询当前时间的下一个星期一是几号?
select next_day(sysdate,'星期一')
from dual;
select next_day(sysdate,'monday')
from dual;
注意:不同语言环境下星期的名字写法。
2)星期的序号
注意:一个星期的第一天是周日。
所以,查询当前时间的下一个周一日期:
select next_day(sysdate,2)
from dual;
·LAST_DAY函数 查询某个日期所在月的最后一天
语法:last_day(日期)
查询当前月的最后一天?
select last_day(sysdate)
from dual;
·ROUND函数 四舍五入
语法:round(日期,取舍规则)
取舍规则:保留哪一位

1)保留到年
原则:根据月份进行判断,6舍7入
语法:round(日期,'year')
舍:舍到今年的1月1号 00:00:00
入:入到明年的1月1号 00:00:00
查询当前日期根据年四舍五入的结果?
select round(sysdate,'year')
from dual;
2)保留到月
原则:根据日进行判断,15舍16入
舍:舍到当前月的1号 00:00:00
入:入到下个月的1号 00:00:00
select round(sysdate,'month')
from dual;
3)保留到日(星期)
原则:根据当前星期数进行计算
取舍到上一个或者下一个星期日
select round(sysdate,'day') from dual;
周日 - 周二 舍 日 一 二
周三 - 周六 入 三 四 五 六
4)默认
select round(sysdate) from dual;
根据当前时间(小时数)进行取舍
在12:00之前的,舍到今天的00:00:00
过了12:00的,入到明天的00:00:00

·TRUNC函数 只舍不取
与ROUND函数使用方法类似,只不过只舍不取。

6.转换函数的应用
1)to_char函数
a)数字类型转换成字符串
语法:to_char(数字,'fmt')
fmt:格式
select to_char(salary,'$9,999.00')
from s_emp;
0:代表强制补位
9:不会进行部位
,:分割
.:小数位
L:当地的货币符号
$:西方人的货币符号

b)日期类型转换成字符串
语法:to_char(日期,'fmt')
YYYY 四位数的完整年份
select to_char(sysdate,'YYYY')
from dual;
MM 两位数的月份数 阿拉伯数字
查询当前时间?以年和月的形式显示?
select to_char(sysdate,'YYYY-MM')
from dual;
D 一个星期中的第几天
查询当前日期是一周中的第几天?
select to_char(sysdate,'D')
from dual;
DD 一个月中的第几天
查询当前日期,以年/月/日的形式显示?
select to_char(sysdate,'YYYY/MM/DD')
from dual;

HH 小时
默认为12小时制
HH24
代表24小时制的小时数
MI 分钟
SS 秒钟

查询当前日期,以‘年-月-日 时:分:秒’
select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS')
from dual;
AM/PM
select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS PM')
from dual;

DDD 一年中的第几天
查询当前日期是今年的第几天?
select to_char(sysdate,'DDD')
from dual;
YEAR 年份的数字全称
select to_char(sysdate,'YEAR')
from dual;
MONTH 月份的完整名字
MON 月份的简称 JAN FEB APR MAR MAY
ddsp sp:spelled 一个月中的第几天用英文拼写
select to_char(sysdate,'ddsp')
from dual;

ddspth 一个月中的第几天英文拼写(序数词)
select to_char(sysdate,'ddspth')
from dual;
DAY 星期的全称
DY 星期的简称
2)to_number
把字符串转换为数字类型
to_number(字符串)
字符串中的内容必须是数字
select to_number('1111') from dual;
3)to_date
把字符串转换成日期格式。
'01-FEB-18'
语法:to_date('2018-03-01','yyyy-dd-mm')
'2018-02-03'

Oracle学习笔记<3>的更多相关文章

  1. Oracle学习笔记三 SQL命令

    SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)  

  2. oracle学习笔记第一天

    oracle学习笔记第一天 --oracle学习的第一天 --一.几个基础的关键字   1.select select (挑选) 挑选出显示的--列--(可以多列,用“,”隔开,*表示所有列),为一条 ...

  3. Oracle学习笔记——点滴汇总

    Oracle学习笔记——点滴汇总 http://www.botangdb.com/ Oracle GI = Grid Infrastructure = ASM + Cluster

  4. Oracle学习笔记之四sp1,Oracle 11g的常用函数

    从Oracle学习笔记之四,SQL语言入门中摘出来的,独立成一章节 3.1 字符类函数 ASCII(c)和CHR(i)    分别用于返回一个字符的ASCII码和返回给定ASCII值所对应的字符. C ...

  5. Oracle学习笔记之四,SQL语言入门

    1. SQL语言概述 1.1 SQL语言特点 集合性,SQL可以的高层的数据结构上进行工作,工作时不是单条地处理记录,而对数据进行成组的处理. 统一性,操作任务主要包括:查询数据:插入.修改和删除数据 ...

  6. Oracle学习笔记—数据字典和常用命令(转载)

    转载自: oracle常用数据字典和SQL语句总结 Oracle常用命令大全(很有用,做笔记) 一.Oracle数据字典 数据字典是Oracle存放有关数据库信息的地方,其用途是用来描述数据的.比如一 ...

  7. oracle学习笔记(一)用户管理

    --oracle学习第一天 --连接 @后面连接数据库实例,具体连接到那个数据库 conn scott/tiger@MYORA1; --修改密码 passw; --显示用户 show user; -- ...

  8. 吴裕雄--天生自然 oracle学习笔记:oracle理论学习详解及各种简单操作例子

    1. 数据库的发展过程 层次模型 -->网状模型 -->关系模型 -->对象关系模型 2. 关于数据库的概念 DB:数据库(存储信息的仓库) DBMS:数据库管理系统(用于管理数据库 ...

  9. Oracle 学习笔记 11 -- 视图 (VIEW)

    本次必须学习一个全新的概念-- 视图 (VIEW).在前面的笔记中曾提到过,数据对象包含:表.视图.序列.索引和同义词.前面的笔记都是对表的想剖析,那么本次笔记就对视图的世界进行深入的剖析. 视图是通 ...

  10. oracle学习笔记1(环境搭建)

    学习的开始先剧透一下,本人有点笨,本来想用oracle vbox,装个red hat+oracle,但是虚拟机一直报错,0x00000000内存不能written.所以便想到其他的办法,刚好接触了go ...

随机推荐

  1. Linux就该这么学07学习笔记

    参考链接:https://www.linuxprobe.com/chapter-07.html RAID磁盘冗余阵列 RAID 0 RAID 0技术把多块物理硬盘设备(至少两块)通过硬件或软件的方式串 ...

  2. zabbix基础之环境搭建

    zabbix入门 环境部署 安装mysql #安装MySQL,官方的MySQL的repo源地址:http://repo.mysql.com/ #选择指定的MySQL版本,我这里选mysql5.7的版本 ...

  3. Django 高级配置

    目录 Django 信号 信号系统三要素: 信号的分类: Django 内置信号: 具体 Django 信号内容 定义信号 发送信号 接收信号 信号接收器 防止重复信号 Django 内置信号操作步骤 ...

  4. Switch能否用String类型做参数?

    switch(expr): 其中,expr参数可以是一个枚举常量(由整型或字符类型实现)或一个整数表达式,其中整数表达式可以是基本类型int或其包装类Integer.由于byte.short和char ...

  5. k8s阅读笔记2-k8s架构

    前言 阅读地址 https://rootsongjc.gitbooks.io/kubernetes-handbook/content/concepts/ 架构 架构图说明: master 指服务端 1 ...

  6. python基础:8.正则表达式

    1.概念 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑. re模块的常见方法: ...

  7. 百度小程序-swiper组件

    .swan <!-- 轮播图S --> <view class="swiper-box"> <swiper class="banner&qu ...

  8. 目前在玩的几款手机挖矿APP

    目前在玩的几款手机挖矿APP 1.网易星球 网易星球app是由网易最新推出的区块链产品,网易星球app用户获得邀请码注册之后就能免费领取数字资产“黑钻”,网易星球app还支持信息安全存储.去中心化价值 ...

  9. HDU 6038 Function —— 2017 Multi-University Training 1

    Function Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total ...

  10. C# 简单软件有效期注册的实现

    ◆需求:公司一直以来对开发的产品都没有进行使用时间的控制,要么就是将日期限制写死在程序里面,每次都要编译新程序再发给客户,很不方便.于是公司让我写个模块,要求如下:1.无论哪个新开发的程序只要调用这个 ...