Oracle学习笔记——常用函数总结
在平时写PL/SQL的时候,经常要用到很多系统自带的函数,而这些函数用起来非常好用,但是每次用完以后,就又忘到脑后了,为了加深自己的映象,以及对这些函数做一个全面的总结,就有了今天这篇文章。
首先这就是一个网上总结烂了的主题。我还要总结,权当自己的学习总结。总结这篇文章时也参考了网上他人总结的文章,如果不喜、勿喷。
作为一篇“鸡肋”文章,弃之如可惜,食之无所得。读者就当一“乐呵”就好了。有钱的捧个钱场,没钱的捧个人场。
常用字符串函数
函数 | 描述 |
---|---|
LOWER(char) | 将字符串表达式char中的所有大写字母转换为小写字母 |
UPPER(char) | 将字符串表达式char中的所有小写字母转换为大写字母 |
INITCAP(char) | 首字母转换成大写 |
SUBSTR(char, start, length) | 返回字符串表达式char中从第start开始的length个字符 |
LENGTH(char) | 返回字符串表达式char的长度 |
ASCII(char) | 取char的ASCII值 |
CHR(number) | 取number的ASCII值 |
REPLACE(char,search_str[,replacement_str]) | 将字符串char中的子串search_str替换成replacement_str;如果search_str=null,返回char;如果replacement_str=null,则会去掉char中的search_str |
INSTR(char1,char2[,n[,m]]) | 获取子串char2在字符串char1中的位置。n为其实搜索位置,m为子串出现的次数;n为负,则从尾部开始搜索;n\m默认为1 |
LPAD(char1,n,char2) | 在字符串char1的左端填充字符串char2直到长度达到n;char2默认为空格,如果char1.length>n,则返回char1左端的n个字符 |
RPAD(char1,n,char2) | 在字符串char1的右端填充字符串char2直到长度达到n;char2默认为空格,如果char1.length>n,则返回char1左端的n个字符 |
LTRIM(char1[,set]) | 去掉字符串char1左端包含的set中的任意字符 |
RTRIM(char1[,set]) | 去掉字符串char1右端包含的set中的任意字符 |
TRIM(char | char From string) | 从字符串的头尾或者两端截断特定字符 |
CONCAT(str1,str2) | 连接字符串,同||的作用一样 |
-- LOWER测试
select LOWER('HTTP://WWW.JELLYTHINK.COM') from dual; -- http://www.jellythink.com
-- UPPER测试
select UPPER('http://www.jellythink.com') from dual; -- HTTP://WWW.JELLYTHINK.COM
-- INITCAP测试
select INITCAP('jelly think') from dual; -- Jelly Think
-- SUBSTR测试
select SUBSTR('http://www.jellythink.com', 12, 10) from dual; -- jellythink(注:下标从1开始)
-- LENGTH测试
select LENGTH('JellyThink') from dual; -- 10
-- ASCII测试
select ASCII('A') from dual; -- 65
-- CHR测试
select CHR(65) from dual; -- A
-- REPLACE测试
select REPLACE('jellythink', 'think', ' is good') from dual; -- jelly is good
-- INSTR测试
select INSTR('JellyThink', 'Jelly', 1) from dual; -- 1
-- LPAD测试
select LPAD('JellyThink', 12, '*') from dual; -- **JellyThink
常用日期函数
每天都在和各种日期打交道,一个会得到这个月的最后一天,一会又要得到当前日期,看看以下的函数吧,是否似曾相识。
函数 | 描述 |
---|---|
SYSDATE | 返回系统当前日期和时间 |
NEXT_DAY(day,char) | 返回指定日期day后的第一个工作日char所对应的日期 |
LAST_DAY(day) | 返回day日期所指定月份中最后一天所对应的日期 |
ADD_MONTHS(day,n) | 返回day日期在n个月后(n为正数)或前(n为负数)的日期 |
MONTHS_BETWEEN(day1,day2) | 返回day1日期和day2日期之间相差得月份 |
ROUND(day[,fmt]) | 返回日期的四舍五入结果。如果fmt指定年度,则7月1日为分界线;如果fmt指定月,则16日为分界线;如果指定天,则中午12:00为分界线,默认舍入到日 |
TRUNC(day,[,fmt]) | 日期截断函数。如果fmt指定年度,则结果为本年度的1月1日;如果为月,则将结果为本月1日,默认截断到日 |
CURRENT_DATE | 返回当前会话时区所对应日期时间 |
EXTRACT | 从日期中获取所需要的特定数据 |
-- SYSDATE测试
select TO_CHAR(SYSDATE,'yyyy-MM-dd hh24:mi:ss') from dual; -- 2015-09-29 15:14:44
-- NEXT_DAY测试
select NEXT_DAY(SYSDATE, '星期一') from dual; -- 2015/10/5 15:16:46
-- LAST_DAY测试
select LAST_DAY(SYSDATE) from dual; -- 2015/9/30 15:17:23
-- ADD_MONTHS测试
select ADD_MONTHS(SYSDATE, 2) from dual; -- 2015/11/29 15:18:39
-- MONTHS_BETWEEN测试
select MONTHS_BETWEEN(SYSDATE, SYSDATE) from dual; -- 0
select MONTHS_BETWEEN(ADD_MONTHS(SYSDATE, -2), ADD_MONTHS(SYSDATE, 2)) from dual; -- -4
-- ROUND测试
select ROUND(SYSDATE) from dual; -- 2015/9/30
select ROUND(SYSDATE, 'YEAR') from dual; -- 2016/1/1
select ROUND(SYSDATE, 'MONTH') from dual; -- 2015/10/1
-- TRUNC测试
select TRUNC(SYSDATE) from dual; -- 2015/9/29
select TRUNC(SYSDATE, 'YEAR') from dual; -- 2015/1/1
select TRUNC(SYSDATE, 'MONTH') from dual; -- 2015/9/1
-- CURRENT_DATE测试
select CURRENT_DATE from dual; -- 2015/9/29 15:22:44
-- EXTRACT测试
select EXTRACT(YEAR from SYSDATE) from dual; -- 2015
select EXTRACT(MONTH from SYSDATE) from dual; -- 9
select EXTRACT(DAY from SYSDATE) from dual; -- 29
常用类型转换函数
类型转换函数是太常见了,什么to_char
啊,to_date
啊,但是你有没有好好的使用过呢?
函数 | 描述 |
---|---|
TO_CHAR | 将一个数字或日期转换成字符串 |
TO_NUMBER | 将字符型数据转换成数字型数据 |
TO_DATE | 将字符型数据转换为日期型数据 |
CAST | 将一种built-in类型转换成另一种built-in类型 |
-- TO_CHAR测试
select TO_CHAR(100) from dual; -- 100
select TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') from dual; -- 2015-09-29 15:36:24
-- TO_NUMBER测试
select TO_NUMBER('10') from dual; -- 10
select TO_NUMBER('JellyThink') from dual; -- 无效数字
-- TO_DATE测试
select TO_DATE('2015-9-29', 'YYYY-MM-DD') from dual; -- 2015/9/29
-- CAST测试
select CAST('100' as NUMBER) from dual; -- 100
select CAST(2 as char) from dual; -- 2
集合函数
有了GROUP BY
,怎么可以少了这些用来统计的集合函数呢。
函数 | 描述 |
---|---|
AVG | 计算一列值的平均值 |
COUNT | 统计一列中值的个数 |
MAX | 求一列值中的最大值 |
MIN | 求一列值中的最小值 |
SUM | 计算一列值的总和 |
其它常用函数
还有一些经常使用的函数不属于上述的任何一种分类,只能作为其它常用函数来分类了,具体你看喽。
函数 | 描述 |
---|---|
decode(expression , search , result [, search , result]... [, default]) | IF语句的另一形式。将输入数值与参数列表比较,返回对应值。应用于将表的行转换成列以及IF语句无法应用的场合 |
SIGN(number) | 如果number大于0,SIGN则返回1;如果number小于0,SIGN则返回-1;如果number等于0,SIGN则返回0 |
TRUNC(number, [ decimal_places ]) | number是要截取的数字,decimal_places是要保留的小数位。这个参数必须是个整数。 如果此参数缺省,默认保留0位小数 |
GREATEST(expr1[,expr2]...) | 返回表达式中值最大的一个 |
LEAST(expr1[,expr2]...) | 返回表达式中值最小的一个 |
NULLIF(expr1,expr2) | 如果expr1=expr2;则返回null,否则返回expr1 |
NVL(expr1,expr2) | 如果expr1=null;则返回expr2,否则返回expr1 |
NVL2(expr1,expr2,expr3) | 如果expr1!=null;则返回expr2;如果expr1=null;则返回expr3 |
-- DECODE测试
select DECODE(20, 10, 5, 200, 10, 20, 30) from dual; -- 30
-- SIGN测试
select SIGN(20) from dual; -- 1
select SIGN(-30) from dual; -- -1
select SIGN(0) from dual; -- 0
-- TRUNC测试
select TRUNC(20.2183, 2) from dual; -- 20.21
select TRUNC(20.1, 4) from dual; -- 20.1
-- GREATEST测试
select GREATEST(20, 100, 30, 20, 40, 400) from dual; -- 400
-- LEAST测试
select LEAST(20, 100, 30, 20, 40, 400) from dual; -- 20
-- NULLIF测试
select NULLIF(20, 20) from dual; -- NULL
select NULLIF(20, 10) from dual; -- 20
-- NVL测试
select NVL(20, 30) from dual; -- 20
select NVL(NULL, 30) from dual; -- 30
-- NVL2测试
select NVL2(NULL, 20, 30) from dual; -- 30
select NVL2('JellyThink', 20, 30) from dual; -- 20
总结
哦,总结完了,感觉还算有点效果,至少又把这些函数重新复习了一遍,不是吗?有些函数真的非常有用,真的希望我的总结对你有帮助。谢谢各位的阅读,也希望你能和我分享你的学习心得。
文章转载:
https://www.jellythink.com/archives/351
Oracle学习笔记——常用函数总结的更多相关文章
- Oracle学习笔记—常用函数
这里记录一些oracle常用的函数. TO_NUMBER()函数 将字符串类型转换成一个 number 类型的值. SELECT TO_NUMBER('100.00') FROM DUAL; TO_C ...
- Oracle 学习笔记 常用查询命令篇
1.查询某个用户下有多少张表 有时候很有用 select count(*) from dba_tables t where t.owner='SCOTT';
- Oracle学习笔记之四sp1,Oracle 11g的常用函数
从Oracle学习笔记之四,SQL语言入门中摘出来的,独立成一章节 3.1 字符类函数 ASCII(c)和CHR(i) 分别用于返回一个字符的ASCII码和返回给定ASCII值所对应的字符. C ...
- Oracle学习笔记—数据字典和常用命令(转载)
转载自: oracle常用数据字典和SQL语句总结 Oracle常用命令大全(很有用,做笔记) 一.Oracle数据字典 数据字典是Oracle存放有关数据库信息的地方,其用途是用来描述数据的.比如一 ...
- 《ORACLE数据库管理与开发》第三章学习之常用函数记录
<ORACLE数据库管理与开发>第三章学习之常用函数记录 注:文章中的*代表所要操作的列名 1.lower(*)/upper(*),将此列下的值转为小写/大写 2.initcap(*):把 ...
- Oracle学习笔记之四,SQL语言入门
1. SQL语言概述 1.1 SQL语言特点 集合性,SQL可以的高层的数据结构上进行工作,工作时不是单条地处理记录,而对数据进行成组的处理. 统一性,操作任务主要包括:查询数据:插入.修改和删除数据 ...
- Oracle学习笔记三 SQL命令
SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)
- oracle学习笔记第一天
oracle学习笔记第一天 --oracle学习的第一天 --一.几个基础的关键字 1.select select (挑选) 挑选出显示的--列--(可以多列,用“,”隔开,*表示所有列),为一条 ...
- Matlab学习笔记 figure函数
Matlab学习笔记 figure函数 matlab中的 figure 命令,能够创建一个用来显示图形输出的一个窗口对象.每一个这样的窗口都有一些属性,例如窗口的尺寸.位置,等等.下面一一介绍它们. ...
随机推荐
- 杭电 1040 As Easy As A+B 【排序】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1040 解题思路:数据不大,可以直接用冒泡排序 #include<stdio.h> int ...
- 用apt-get install一个软件的时候出现错误: 无法解析或打开软件包的列表或是状态文件
用apt-get install一个软件的时候出现了一个错误: E: Encountered a section with no Package: header E: Problem with Mer ...
- 企业级任务调度框架Quartz(6) 任务调度器(Scheduler)
前序: 我们已经在前面的内容能里看到了,我们用 Scheduler 来管理我们的 Job:创建并关联触发器以使 Job 能被触发执行:以及如可选择 calendar 为给定的时程安排提供更多 ...
- JS 封装一个求n~m的求和函数
var a = 0; cc(2,10); function cc(n,m){ for(var i =n;i<(m+1);i++){ a = a + ...
- day25-3 json,pickle模块
目录 json 序列化 反序列化 pickle json json文件并不是python独有的,所有的语言都有json,可以跨平台/语言传输数据 json文件中只能写入python中的dict/lis ...
- flex笔记 - 基础
flex笔记 - 基础 文章中的所有图示代码都放在了github上: 阮一峰flex博客跟学代码 传统的布局解决方案,基于盒模型, 依赖 display, position, float属性来进行布局 ...
- Project Euler 37 Truncatable primes
题意:3797有着奇特的性质.不仅它本身是一个素数,而且如果从左往右逐一截去数字,剩下的仍然都是素数:3797.797.97和7:同样地,如果从右往左逐一截去数字,剩下的也依然都是素数:3797.37 ...
- webKit 内核浏览器 源码分析
如需转载,请注明出处! WebSite: http://www.jjos.org/ 作者: 姜江 linuxemacs@gmail.com QQ: 457283 这是一篇自己写于一年前的工作文档,分享 ...
- JSP中文乱码问题的由来以及解决方法
首先明确一点,在计算机中,只有二进制的数据! 一.java_web乱码问题的由来 1.字符集 1.1 ASCII字符集 在早期的计算机系统中,使用的字符非常少,这些字符包括26个英文字母.数字符号和一 ...
- Tensorflow高效读取数据的方法
最新上传的mcnn中有完整的数据读写示例,可以参考. 关于Tensorflow读取数据,官网给出了三种方法: 供给数据(Feeding): 在TensorFlow程序运行的每一步, 让Python代码 ...