Oracle学习笔记_03_单行函数
1.SQL函数:
单行函数、多行函数
单行函数:
操作数据对象
接受参数返回一个结果
只对一行进行变换
每行返回一个结果
可以转换数据类型
可以嵌套
参数可以是一列或一个值
2.单行函数分类
字符、数字、日期、转换、通用函数
3.字符函数
(1)大小写控制函数:LOWER、UPPER、INITCAP
LOWER('SQL Course') sql course
UPPER('SQL Course') ——> SQL COURSE
INITCAP('SQL Course') Sql Course
SELECT employee_id, last_name, department_id
FROM employees
WHERE LOWER(last_name) = 'shirayner';
(2)字符控制函数
CONCAT('Hello' ,'World') HelloWorld
SUBSTR('HelloWorld', 1 , 5 ) Hello
LENGTH('HelloWorld') 10
INSTR('HelloWorld' ,'W') ——> 6
LPAD(salary , 10 , '*') *****24000 (用*左填充)
RPAD(salary , 10 , '*') 24000*****
TRIM('H' FROM 'HelloWorld') elloWorld
REPLACE(‘abcd’ , ’b’ , ’m’) amcd
4.数字函数
个位数的下标为0
ROUND: 四舍五入
ROUND(45.926) = ROUND(45.926,0) 46
ROUND(45.926, 2) 45.93
TRUNC: 截断
TRUNC(45.926) =TRUNC(45.926,0) 46
TRUNC(45.926, 2) 45.92
TRUNC(45.926, -2) 0
TRUNC(45.926, -1) 40 (保留十位,后面截去,补0)
MOD: 求余
MOD(1600, 300) 100
MOD(salary, 5000)
5.日期函数
Oracle 中的日期型数据实际含有两个值: 日期和时间。
函数SYSDATE 返回: 日期、时间
(1)日期的数学运算:
在日期上加上或减去一个数字结果仍为日期。
两个日期相减返回日期之间相差的天数。 (日期不允许做加法运算,无意义)
可以用数字除24来向日期中加上或减去天数。
(2)日期函数
MONTHS_BETWEEN ('01-SEP-95','11-JAN-94') : 两个日期相差的月数 19.6774194
ADD_MONTHS ('11-JAN-94',6) : 向指定日期中加上若干月数 '11-JUL-94'
NEXT_DAY ('01-SEP-95','FRIDAY') : 指定日期的下一个星期 * 对应的日期 '08-SEP-95'
NEXT_DAY ('01-SEP-95',1) 指定日期的下一个星期1对应的日期
LAST_DAY ('01-FEB-95') : 本月的最后一天 '28-FEB-95'
ROUND('25-JUL-95' ,'MONTH') : 日期四舍五入 '01-AUG-95'
TRUNC('25-JUL-95' ,'MONTH') : 日期截断 '01-JUL-95'
6.转换函数
数据类型转换:隐式 、显式
隐式: Oracle 自动完成下列转换
显式:
(1) TO_CHAR(date, 'format_model')
select employee_id,hire_date
from employees
where to_char(hire_date,'yyyy/mm/dd') = '1994/06/07';
--where to_date('1994/06/07','yyyy/mm/dd') = hire_date;
TO_CHAR(number, 'format_model')
select to_char(12345678.99,'L999,999,999.99') from dual;
在TO_CHAR 函数中经常使用的几种格式:
(2)TO_DATE(char[ , 'format_model' ])
select employee_id,hire_date
from employees
--where to_char(hire_date,'yyyy/mm/dd') = '1994/06/07';
where to_date('1994/06/07','yyyy/mm/dd') = hire_date;
(3)TO_NUMBER(char[ , 'format_model' ])
TO_NUMBER(‘¥1,234,567,890.00’,’L999,999,999,999.99’)
from dual
7.通用函数
这些函数适用于任何数据类型,同时也适用于空值:
NVL (expr1, expr2) 若expr1不为空,则expr1=expr1 ; 为空,expr1=expr2
NVL2 (expr1, expr2, expr3) 若expr1不为空,则expr1=expr2 ; 为空,expr1=expr3
NULLIF (expr1, expr2) 相等返回NULL,不等返回expr1
COALESCE (expr1, expr2, ..., exprn) 返回表达式中第一个非空表达式,如果都为空则返回空值。
(1) NVL (expr1, expr2)
select last_name,nvl(to_char(department_id),'没有部门')
from employees;
(2) NVL2 (expr1, expr2, expr3)
select employee_id, nvl2(commission_pct ,commission_pct + 0.015 , 0.01)
from employees;
(3) NULLIF (expr1, expr2)
SELECT first_name, LENGTH(first_name) "expr1",
last_name, LENGTH(last_name) "expr2",
NULLIF(LENGTH(first_name), LENGTH(last_name)) result
FROM employees;
(4) COALESCE (expr1, expr2, ..., exprn)
SELECT last_name,
COALESCE(commission_pct, salary, 10) comm
FROM employees
ORDER BY commission_pct;
(5)条件表达式之 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 last_name, job_id, salary,
CASE job_id WHEN 'IT_PROG' THEN 1.10*salary
WHEN 'ST_CLERK' THEN 1.15*salary
WHEN 'SA_REP' THEN 1.20*salary
ELSE salary
END "REVISED_SALARY"
FROM employees;
(6)条件表达式之 DECODE 函数
语法: 若expression=search1,则结果为 result1
DECODE(col|expression, search1, result1 ,
[, search2, result2,...,]
[, default])
示例:
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学习笔记_03_单行函数的更多相关文章
- Oracle学习笔记:trunc函数
在Oracle中可以使用trunc函数进行日期截取和数字截取,具体使用方法如下: 1.trunc(for dates) 日期截取 语法:trunc(date,[fmt]) select trunc(s ...
- Oracle学习笔记:wm_concat函数合并字段
在Oracle中使用wm_concat(column)可以实现字段的分组合并,逗号分隔. 例如,现有表temp_cwh_test: -- 创建临时表 create table temp_cwh_tes ...
- PL/SQL学习笔记_03_存储函数与存储过程
ORACLE 提供可以把 PL/SQL 程序存储在数据库中,并可以在任何地方来运行它.这样就叫存储过程或函数. 存储函数:有返回值,创建完成后,通过select function() from dua ...
- Oracle学习第二篇—单行函数
1字符函数 length 字符长度 lengthb 字节长度 lower 变为小写 upper 变为大写 initcap 首字母大写 select Lower('xun Ying') 小写,Uppe ...
- Oracle 学习笔记 18 -- 存储函数和存储过程(PL/SQL子程序)
PL/SQL子程序 它包含了函数和过程.此功能是指用户定义的函数.和系统功能是不同的.子程序通常完成特定的功能PL/SQL座.,能够被不同的应用程序多次调用.Oracle提供能够把PL/SQL程序存储 ...
- Oracle学习笔记之用户自定义函数
自定义函数语法格式: 用户自定义的函数,可以直接在sql语句中直接调用,并且任何一个funciton都必须有返回值,而且该函数声明后,是保存在数据端的,我们随时可以使用:注意:函数只能有一个返回值 ...
- Oracle学习笔记:decode函数
decode函数主要作用:将查询结果翻译成其他值(即以其他形式变现出来) 使用方法: SELECT DECODE(colunm_name,值1,翻译值1,值2,翻译值2……值n,翻译值n,缺省值) F ...
- Oracle学习笔记_05_分组函数
组函数:avg sum max min count group by having group by 增强:rollup cube grouping groupi ...
- Oracle学习笔记之四sp1,Oracle 11g的常用函数
从Oracle学习笔记之四,SQL语言入门中摘出来的,独立成一章节 3.1 字符类函数 ASCII(c)和CHR(i) 分别用于返回一个字符的ASCII码和返回给定ASCII值所对应的字符. C ...
随机推荐
- ActiveMQ与xml rpc
最近项目在做平台间的消息传递,也让我对平台间消息的传递进行了深一步的探讨.先叙述一下概况 公司上一个版本用的是winform做的监控软件,主要做设备的通信和控制,基本的连接如下
- Ubuntu 16.04 关闭/打开笔记本触摸板
由于笔记本触摸板太多灵敏,影响使用,所以禁用掉触摸板. 禁用触摸板命令: sudo rmmod psmouse 启用触摸板命令 sudo modprobe psmouse 注意:启用之后可能会有几秒钟 ...
- 如何玩转最新的项目的搭配springmvc+mybatis+Redis+Nginx+tomcat+mysql
上一次完成nginx+tomcat组合搭配,今天我们就说说,这几个软件在项目中充当的角色: 要想完成这几个软件的组合,我们必须知道和熟悉应用这个框架, 一: Nginx:在项目中大多数作为反向代理服务 ...
- 值类型,Nullable类型
1. 值类型 比如说int吧,是值类型,是个struct,是这样声明的 public struct Int32 : IComparable, IFormattable, IConvertible, I ...
- diamond源码阅读-目录监控
PathNode(Path)StandardWatchEventKind(WatchEvent)Watchable(WatchKey WatchService WatchEvent)WatchKey( ...
- [Sdoi2013]随机数生成器(BSGS)
#include<cstdio> #include<cstring> #include<cmath> #include<iostream> #inclu ...
- VIM YCM 插件安装问题记录
参考:https://github.com/yangyangwithgnu/use_vim_as_ide https://github.com/Valloric/YouCompleteMe 根据 ht ...
- TS视频一
ts文件 ts文件为传输流文件,视频编码主要格式h264/mpeg4,音频为acc/MP3. ts文件分为三层:ts层Transport Stream.pes层 Packet Elemental St ...
- c的详细学习(7)指针学习(一)
指针是c语言的一个重要概念,指针类型是c语言最有特色的数据类型: *利用指针编写的程序可使调用函数共享变量或数据结构,实现双向数据通信: *可以实现内存空间的动态存储分配:可以提高程序的编译效率和执行 ...
- 【二叉堆】k路归并问题(BSOJ1941)
Description 有n个函数,分别为F1,F2,...,Fn.定义Fi(x)=Ai*x^2+Bi*x+Ci(x∈N*).给定这些Ai.Bi和Ci,请求出所有函数的所有函数值中最小的m个(如有重复 ...