Oracle入门第二天(下)——单行函数
一、概述
以下内容完整参阅,参考官方文档函数手册部分:https://docs.oracle.com/cd/E11882_01/nav/portal_5.htm
离线chm手册英文版:链接:https://pan.baidu.com/s/1o85jQ9G 密码:ssyj——(若无法显示正文,在文件上右键属性-解除锁定即可!)
什么是单行函数:
操作数据对象
接受参数返回一个结果
只对一行进行变换
每行返回一个结果
可以转换数据类型
可以嵌套
参数可以是一列或一个值

// 比如分组函数就是典型的多行函数
分类:

二、字符函数
大小写控制函数:
LOWER()——转化为小写
UPPER()——转化为大写
INITCAP()——首字母大写
SELECT LOWER('SQL Course'),UPPER('SQL Course'),INITCAP('SQL Course') FROM dual;
LOWER('SQLCOURSE') UPPER('SQLCOURSE') INITCAP('SQLCOURSE')
------------------ ------------------ --------------------
sql course SQL COURSE Sql Course
// dual是一张虚表,并且再次提醒SQL大小写不敏感,lower()也是允许的
字符控制函数:
CONCAT('Hello', 'World')——连接字符串
SUBSTR('HelloWorld',1,5)——取子串,从下标1开始,取5个(SQL下标从1开始而不是0)
LENGTH('HelloWorld')——得到长度
INSTR('HelloWorld', 'W')——首次出现的位置
LPAD(salary,10,'*')——左补齐
RPAD(salary, 10, '*')——右补齐
TRIM('H' FROM 'HelloWorld')——去除首尾的指定字符
REPLACE(‘abcd’,’b’,’m’)——替换所有的字符,(将b替换为m)
SELECT CONCAT('HelloWorld','jiangbei'),SUBSTR('HelloWorld',1,5),LENGTH('HelloWorld'),INSTR('HelloWorld','W') FROM dual;
CONCAT('HELLOWORLD','JIANGBEI' SUBSTR('HELLOWORLD',1,5) LENGTH('HELLOWORLD') INSTR('HELLOWORLD','W')
------------------------------ ------------------------ -------------------- -----------------------
HelloWorldjiangbei Hello 10 6
SELECT LPAD(salary,10,'*') FROM employees; LPAD(SALARY,10,'*')
--------------------
*****24000
*****17000
*****17000
******9000
******6000
SELECT TRIM('H' FROM 'H2H2H'),REPLACE('H2H2H2','H','M') FROM dual;
TRIM('H'FROM'H2H2H') REPLACE('H2H2H2','H','M')
-------------------- -------------------------
2H2 M2M2M2
三、数字函数
ROUND(45.926,2)——四舍五入
TRUNC(45.926,2)——截断
MOD(100,3)——求余
SELECT ROUND(45.926,2),TRUNC(45.926,2),MOD(100,3) FROM dual; ROUND(45.926,2) TRUNC(45.926,2) MOD(100,3)
--------------- --------------- ----------
45.93 45.92 1
四、日期函数
SYSDATE——返回日期与时间
select sysdate from dual;
使用trunc(sysdate) 只取日期部分
日期数字运算:
在日期上加上或减去一个数字结果仍为日期。 两个日期相减返回日期之间相差的天数。
日期不允许做加法运算,无意义 可以用数字除24来向日期中加上或减去天数。
日期函数

ADD_MONTHS ('11-JAN-94',6)——'11-JUL-94'
五、转换函数
隐式转换

显示转换函数
TO_CHAR(date, 'format_model')——日期转化为字符型
日期格式如下;yyyy 年 mm 月 dd 日 day 星期 hh 小时 mi 分钟 ss 秒
TO_DATE('char','format_mldel')——字符转化为日期
TO_CHAR(number, 'format_model')——数字转字符
SELECT TO_CHAR(1234567.89,'999,999,999.99')

TO_NUMBER(‘¥1,234,567,890.00’,’L999,999,999,999.99’)
六、通用函数
这些函数适用于任何数据类型,同时也适用于空值:
NVL (expr1, expr2)——空值转化为指定值
NVL2 (expr1, expr2, expr3)——expr1不为NULL,返回expr2;为NULL,返回expr3。
NULLIF (expr1, expr2)——相等返回NULL,不等返回expr1
COALESCE (expr1, expr2, ..., exprn)——交替判断是否为空:若expr1为空,返回expr2;若expr2为空,返回expr3;依次类推
七、条件表达式
SQL中使用IF/ELSE可以有两种方式:
CASE表达式;
语法:
CASE expr WHEN comparison_expr1 THEN return_expr1
[WHEN comparison_expr2 THEN return_expr2
WHEN comparison_exprn THEN return_exprn
ELSE else_expr]
END
示例:
SELECT
employee_id,last_name,department_id,CASE department_id WHEN 10 THEN salary*1.1
WHEN 20 THEN salary*1.2
ELSE salary*1.3
END AS NEW_SAL
FROM
employees
WHERE
department_id IN (10,20,30)
// 如果后面不使用别名,将会生成内置别名
EMPLOYEE_ID LAST_NAME DEPARTMENT_ID NEW_SAL
----------- ------------------------- ------------- ----------
114 Raphaely 30 14300
115 Khoo 30 4030
116 Baida 30 3770
117 Tobias 30 3640
118 Himuro 30 3380
119 Colmenares 30 3250
200 Whalen 10 4840
201 Hartstein 20 15600
202 Fay 20 7200 9 rows selected
更多CASE用法,参考:http://blog.itpub.net/27042095/viewspace-739106/
DECODE函数;
语法:
DECODE(col|expression, search1, result1 ,
[, search2, result2,...,]
[, default])
decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值)
示例:
SELECT last_name, job_id, salary,
DECODE(job_id, 'IT_PROG', 1.10*salary,
'ST_CLERK', 1.15*salary,
'SA_REP', 1.20*salary,
salary)
REVISED_SALARY
FROM employees;
Oracle入门第二天(下)——单行函数的更多相关文章
- Oracle笔记(三)单行函数
-函数 函数像一个黑盒子一样(看不到里边的构造),有参数返回值,可以为我们完成一定的功能. -单行 这种函数会对结果中的每一行计算一次,每行返回一个结果,单行概念区别于分组函数. 单行函数主要分为以下 ...
- Oracle入门第二天(上)——基本查询SQL
一.SQL概述 起源于标准不再赘述,主要分为DDL,DML,DCL 相关介绍,参考MySQL章节:http://www.cnblogs.com/jiangbei/p/6696202.html 二.基本 ...
- Oracle笔记(五) 单行函数
虽然各个数据库都是支持SQL语句的,但是每一个数据库也有每一个数据库自己所支持的操作函数,这些就是单行函数,而如果要想进行数据库开发的话,除了要会使用SQL之外 ,就是要多学习函数. 单行函数主要分为 ...
- Oracle SQL Lesson (3) - 使用单行函数自定义输出
大小写转换函数LOWER('SQL Course') = sql courseUPPER('SQL Course') = SQL COURSEINITCAP('SQL Course') = Sql C ...
- Shell编程入门(第二版)(下)
... ... command n done #select把关键字中的每一项做成类似表单,以交互的方式执行do和done之间的命令 示例-select.sh [python] view plainc ...
- Oracle入门第六天(下)——高级子查询
一.概述 主要内容: 二.子查询介绍 1.简单子查询(WHERE子查询) SELECT last_name FROM employees WHERE salary > (SELECT salar ...
- Oracle数据库从入门到精通 单行函数问题
视频课程:李兴华 Oracle从入门到精通视频课程 学习者:阳光罗诺 视频来源:51CTO学院 Oracle数据库从入门到精通-单行函数 在数据库中,为了方便用户的数据开发,往往会提供一系列的支持函数 ...
- Oracle 单行函数
一.什么是函数 任何东西,只要它能接收输入,对输入进行加工并产生输出,它就可以被称为函数. 二.单行函数简介 单行函数只对表中的一行数据进行操作,并且对每一行数据只产生一个输出结果.单行函数可以接受一 ...
- Oracle Day2 过滤、排序、单行函数
1.过滤和排序 SQL> --查询10号部门的所有员工信息 SQL> select * from emp ; 未选定行 SQL> ed SP2: 无法创建保存文件 "afi ...
随机推荐
- Android studio ocr初级app开发问题汇总(含工程代码)
博客第一篇文章,稍作修改,增加文字介绍 开发目的 最近由于某些需求,需要在Android手机端实现OCR功能,大致为通过手机照相,识别出相片中的中文信息字段.但是由于新手光环+流程不熟悉,遇到了各种各 ...
- 【解决方案】[XCUITest] WDA is not listening at 'http://localhost:8100/'
1. 使用Xcode 编译 WebDriver 发现端口为:serverurlhere->http://手机ip:0 <-serverurlhere 2. 解决方案: xcodebuild ...
- SQL监控:mysql及mssql数据库SQL执行过程监控审计
转载 Seay_法师 最近生活有很大的一个变动,所以博客也搁置了很长一段时间没写,好像写博客已经成了习惯,搁置一段时间就有那么点危机感,心里总觉得不自在.所以从今天起还是要继续拾起墨笔(键盘),继续好 ...
- Spring JPA 主键
JPA主键生成器和主键生成策略 JPA中创建实体时,需要声明实体的主键及其主键生成策略.我们有一个实体类叫做Email,其主键上声明如下: @Id @Column(name = "EMAIL ...
- BZOJ1016:[JSOI2008]最小生成树计数(最小生成树,DFS)
Description 现在给出了一个简单无向加权图.你不满足于求出这个图的最小生成树,而希望知道这个图中有多少个不同的最小生成树.(如果两颗最小生成树中至少有一条边不同,则这两个最小生成树就是不同的 ...
- 【[HEOI2016/TJOI2016]序列】
压行真漂亮 首先这肯定是一个\(dp\)了 设\(dp_i\)表示\(i\)结尾的最长不下降子序列的长度 显然我们要找一个\(j\)来转移 也就是\(dp_i=max(dp_j+1)\) 那么什么样的 ...
- P2149 [SDOI2009]Elaxia的路线
题目描述 最近,Elaxia和w**的关系特别好,他们很想整天在一起,但是大学的学习太紧张了,他们 必须合理地安排两个人在一起的时间. Elaxia和w**每天都要奔波于宿舍和实验室之间,他们 希望在 ...
- 5、Dubbo-监控中心
5.1).dubbo-admin 图形化的服务管理页面:安装时需要指定注册中心地址,即可从注册中心中获取到所有的提供者/消费者进行配置管理 5.2).dubbo-monitor-simple 简单的监 ...
- 20165302实验二java面向对象程序设计
20165302实验二java面向对象程序设计 实验结果 提交点1 1.实验要求: 参考 (http://www.cnblogs.com/rocedu/p/6371315.html#SECUNITTE ...
- Dubbo实践(十一)远程调用流程
默认协议的rpc 过程是比较复杂的,其中涉及到了各个方面,其余各协议实际上有对这个过程进行简化:因此看懂了默认协议的rpc 过程,其他协议就非常容易懂了.在讲Dubbo通信过程之前,可以先了解:Jav ...