Oracle从零开始04——SQL语句03——单行函数
5.单行函数
function_name(column|expression,[arg1,arg2,…])
参数说明:function_name:函数名称
column:数据库列名
expression:字符串或计算表达式
arg1,arg2:在函数中使用参数
1)字符函数
接受字符输入并返回字符或数值
a)小写变大写UPPER()
如:SELECT UPPER('smith') FROM dual;
如用户查找时不会考虑姓名是大写还是小写,所以在查询语句中为了方便就可以使用upper函数:
SELECT* FROM emp WHERE ename = UPPER('Smith') ;
b)大写变小写LOWER()
如:SELECT LOWER ('HELLO WORLD') FROM dual;
c)首字母大写INITCAP()
如:SELECT INITCAP ('HELLO WORLD') FROM dual;
如将雇员表中的雇员姓名变为首字母大写:
SELECT INITCAP (ename) FROM emp;
d)字符串连接CONCAT()
但是此种方式不如||好用
如:SELECT CONCAT ('hello','world') FROM dual;
e)字符串截取SUBSTR()
f)字符串长度LENGTH()
g)字符串替换REPLACE()
如:SELECT SUBSTR('hello',1,3) 截取字符串,
LENGTH('hello') 字符串长度,
REPLACE('hello', 'l', 'x') 字符串替换
FROM dual;
截取点从0和1都是一样的
如已显示所有雇员的姓名及姓名的后三个字符(因为雇员姓名的字符喜欢长度不一样,只能求出整个的长度再减去2,进行截取):
SELECT ename, SUBSTR(ename,LENGTH(ename)-2) FROM emp;
SUBSTR可以倒着截取,只要输入的位置是负数就表示倒着进行
SELECT ename, SUBSTR(ename,-3,3) FROM emp;
2)数值函数
接受数值输入并返回数值
a)四舍五入ROUND()
如执行四舍五入操作:
如保留两位小数:
如保留整数位:
b)截断小数位TRUNC()
与ROUND()不同,在TRUNC()中不会保留任何的小数,而且也不会进位
如验证TRUNC函数:
通过该函数也可以指定小数点的保留位数:
也可以使用负数表示位数:
取余(取模)MOD()
3)日期函数
对日期型数据进行操作
日期±数字=日期
日期-日期=数字(天数)
如:显示10部门雇员进入公司的星期数
首先要知道前日期:
求出星期数:当前日期-雇用日期=天数 天数/7=星期数:
SELECT empno,ename,ROUND((SYSDATE-hiredate)/7) FROM emp;
a)MONTHS_BETWEEN()给定日期范围的月数
b)ADD_MONTHS()指定日期上加上指定约束,求出之后的日期
c)NEXT_DAY()下一个的指定日期
d)LAST_DAY ()求出给定日期的最后一天日期
4)转换函数
从一种数据类型转换为另一种数据类型
a)TO_CHAR():转换成字符串
拆分年月日:如要将雇用日期的年月日进行分开,就可以使用这个函数进行拆分。但是首先必须指定拆分的通配符:
SELECT empno,ename,
TO_CHAR(hiredate,'yyyy') year,
TO_CHAR(hiredate,'mm') months,
TO_CHAR(hiredate,'dd') day
FROM emp;
日期格式转换:
Oracle中默认的日期格式:19-4月 -87
中国的格式:1987-04-19
SELECT empno,ename,TO_CHAR(hiredate,'yyyy-mm-dd') FROM emp;
去掉前导0:如果是5月会用05表示,如果不希望出现的话,可以使用fm去掉
SELECT empno,ename,TO_CHAR(hiredate,'fmyyyy-mm-dd') FROM emp;
分割数字:在数字中加入一些符号以分割太长的数字,一般使用","
9:表示一位数字
SELECT empno,ename,TO_CHAR(sal,'99,999') FROM emp;
金额显示 方式:
$:表示美元
L:Local的缩写,以本地的语言显示金额
SELECT empno,ename,TO_CHAR(sal,'$99,999') FROM emp;
SELECT empno,ename,TO_CHAR(sal,'L99,999') FROM emp;
b)TO_NUMBER():转换成数字
SELECT TO_NUMBER('123')+TO_NUMBER('123') FROM dual;
c)TO_DATE():转换成日期
SELECT TO_DATE('2009-02-16','yyyy-mm-dd') FROM dual;
5)通用函数
a)NVL函数
如计算年薪
SELECT empno,ename,(sal+comm)*12 FROM emp;
造成这样的结果是有些雇员的奖金是NULL,NULL计算之后还是NULL,此时就可以使用NVL函数,将一个指定的null值变成指定的内容
SELECT empno,ename,NVL(comm,0),(sal+NVL(comm,0))*12 income FROM emp;
b)DECODE函数
类似于IF…ELSE语句
DECODE(col/expression,search1,result1[,search2,result2,…][,default])
说明:col/expression:列名或者表达式
search1、search2…searchi:用于比较的条件
result1、result2…resulti:返回值
如果col/expression和searchi相比较,结果相同的话则返回resulti,如果没有与col/expression相匹配的结果,则返回默认值default
SELECT DECODE(1,1,'内容是1',2,'内容是2',3,'内容是3') FROM dual;
转载于:https://blog.51cto.com/858315/1124949
Oracle从零开始04——SQL语句03——单行函数相关推荐
- SQL语句之单行函数
单行函数 1. 函数的理解 1.1 什么是函数 函数在计算机语言的使用中贯穿始终,函数的作用是什么呢?它可以把经常使用的代码封装起来,需要的时候直接调用即可.这样既提高了代码效率,又提高了可维护性.在 ...
- Oracle数据库中SQL语句用法(一)
Copyright © 2019 @Linyer. All Rights Reserved 下接Oracle数据库中SQL语句用法(二)[点击以查看] 目录 第1章:编写基本的SQL SELECT语句 ...
- sql语句中的函数使用
select *,sum(item_XXname) as itemSum from 表名. get(itemSum) 便可得到一系列的对应字段的和. 涉及到的其他的函数还有,摘自以下地址 http:/ ...
- Oracle]高效的SQL语句之分析函数
[Oracle]高效的SQL语句之分析函数(一)--sum() 实际应用中我们可以通过sum()统计出组中的总计或者是累加值,具体示例如下: 1.创建演示表 create table emp as s ...
- 本地可以使用oracle吗,Oracle - PLS-00642:SQL语句中不允许使用本地集合类型
我是ORACLE编程中的新手,我试图将表列值与传入的数组进行比较,并且我在此过程中遇到了相当令人沮丧的时间.Oracle - PLS-00642:SQL语句中不允许使用本地集合类型 这是来自包头的类型 ...
- Oracle查看注释SQL语句
Oracle查看注释SQL语句 --查询表的列名和对应列名的注释 --查询表的字段类型及字段长度 --查询表名注释 --查询创建视图语句 --查询视图的列注释 --删除视图 --查看视图名注释 --修 ...
- oracle维护常用SQL语句(查看系统表和视图)
转:http://www.360doc.com/content/11/1230/15/7489308_176090474.shtml oracle维护常用SQL语句(查看系统表和视图) 1.查看表空间 ...
- SQL语句--简单的函数书写举例(3)
SQL语句–简单的函数书写举例(3) 在前两篇中,案例只涉及到简单的数值,这样的函数称为[标量函数] 这里的函数,可以简单的理解为它是一个可以进行计算的工具 标量函数:是简单的数值,eg:int.ch ...
- SQL语句--简单的函数书写举例(1)
SQL语句–简单的函数书写举例(1) 在数据库下的[可编程性]–[函数]下可看到有4类函数,平时用的函数大部分为[系统函数]下的,当这些函数不能满足实际需求时,我们要自己创建函数. eg:计算 A+B ...
最新文章
- 实践指南 | 用PyTea检测 PyTorch 中的张量形状错误
- scrapy item引用时报错
- Petalinux 2018.2 for Xilinx
- QQ,MSN,SKYPE等在线状态代码
- 【Docker】Docker 启用 Kubernetes 报错 insecure-registries Must be host[ port] or CIDR
- Ubuntu报错:E: The repository http://ppa.launchpad.net/fcitx-team does not have a Release file.
- java代码发送邮箱_邮件发送 - java代码库 - 云代码
- 有关SQLite数据库的一些实证数据,有一定历史比较和参考意义
- [USACO10FEB]购买巧克力Chocolate Buying
- VS2005 SP1补丁下载与安装
- 敏捷教练 V 形六步法实战:从布朗运动到深度协作
- linux 多块网卡 bridge,理解linux虚拟网络设备bridge
- Java实现 LeetCode 492 构造矩形
- 什么是尾递归?javascript 尾递归优化
- Query Planning(查询方案)(搜索一)
- android 服务检测,Android检测某个服务是否还活着代码
- P7560-[JOISC 2021 Day1]フードコート【吉司机线段树】
- 南怀瑾老师:人最大的毛病就是不敢承认“心即是佛、心即是道
- 官宣 .NET 6 预览版 6
- 史上最大界面升级!微软 Windows 10 21H2!
热门文章
- jQuery图片轮播特效
- 简单实现一边固定,另一边自适用
- 余额宝 vs. P2P网贷,谁更有生命力?
- 重建输入表 - 脱壳篇04
- java webservice报文过长_工作1-5年的Java程序猿到底需要怎样的一个技术栈?
- createrepo命令安装_安装CDH6.3
- linux 自动安装 get,linux下自动获取并安装软件包 apt-get 的命令介绍
- server sql 判断是否是当天_判断sql server 是否在开启服务状态
- ios删除分割线_iOS应用开发中UITableView的分割线的一些设置技巧
- 第十一章 机器学习系统设计-机器学习老师板书-斯坦福吴恩达教授