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 命令,能够创建一个用来显示图形输出的一个窗口对象.每一个这样的窗口都有一些属性,例如窗口的尺寸.位置,等等.下面一一介绍它们. ...
随机推荐
- RabbitMQ学习之spring配置文件rabbit标签的使用
下面我们通过一个实例看一下rabbit的使用. 1.实现一个消息监听器ReceiveMessageListener.Java package org.springframework.amqp.core ...
- PHP 获取文件 扩展名 的常用方法小结【五种方式】
1: function getExt1($filename) { $arr = explode('.',$filename); return array_pop($arr);; } ...
- 使用dom4j生成word的方法
http://blog.csdn.net/zhyh1986/article/details/8727523#t6 http://blog.csdn.net/zuozuofuwaiwai/article ...
- JDBC连接MySQL数据库(一)——数据库的基本连接
JDBC的概念在使用之前我们先了解一下JDBC的概念, JDBC的全称是数据库连接(Java Database Connectivity),它是一套用于执行SQL语句时的API,应用程序可以通过这套A ...
- [USACO4.2] 草地排水 Drainage Ditches (最大流)
题目背景 在农夫约翰的农场上,每逢下雨,贝茜最喜欢的三叶草地就积聚了一潭水.这意味着草地被水淹没了,并且小草要继续生长还要花相当长一段时间.因此,农夫约翰修建了一套排水系统来使贝茜的草地免除被大水淹没 ...
- 使用python脚本定时备份web网站
#!/usr/bin/env python #-*- coding: utf-8 -*- import os import time # 备份的指定目录 source = ['/data/www/Ad ...
- Adnroid_sdk安装代理
- 加速 MySQL 导入导出的方法
http://www.21andy.com/new/20100917/1952.html MySQL导出的SQL语句在导入时有可能会非常非常慢,在处理百万级数据的时候,可能导入要花几小时.在导出时合理 ...
- ASP.NET中的Webconfig 和 Global.asax区别
Web.Config与Global.asax的区别: Config可以根据不同的错误类型定义不同的错误页,网站重定义转向新的错误页面. Global,在全局错误中写入应用程序事件错误信息,并在当前页输 ...
- [Linux]第四部分-Linux用户管理
登陆过程:1.从etc/passwd中查找账号,没有则退出,然后在etc/shadow中读出uid与密码表passwd中内容格式 用户名:密码:UID:GID:用户信息说明:家目录:用户所用Shell ...