Oracle经常用到的一些函数
1、数字函数
:如果string1为NULL,则NVL函数返回replace_with的值,否则返回string1的值,如果两个参数都为NULL ,则返回NULL。示例如下:
SQL> select NVL(NULL,1) from dual; NVL(NULL,1)
-----------
1 SQL> select NVL(12,1) from dual; NVL(12,1)
----------
12 SQL> select NVL('',1) from dual; -----单引号里没有空格 NVL('',1)
---------
1
E2, E3)
SQL> select nvl2(NULL,12,3) from dual; NVL2(NULL,12,3)
---------------
3 SQL> select nvl2(5,12,3) from dual; NVL2(5,12,3)
------------
12
SQL> select SIGN(-10),SIGN(0),SIGN(5) from dual; SIGN(-10) SIGN(0) SIGN(5)
---------- ---------- ----------
-1 0 1
CEIL(n) :该函数用于返回大于等于数字n的最小整数.
SQL> select ceil(15),ceil(15.1) from dual; CEIL(15) CEIL(15.1)
---------- ----------
15 16
FLOOR(n):该函数用于返回小于等于数字n的最大整数。
SQL> select floor(15),floor(15.1) from dual; FLOOR(15) FLOOR(15.1)
---------- -----------
15 15
MOD(m,n) :该函数用于返回两个数字相除后的余数.如果数字n为0,则返回结果为m。
SQL> select mod(10,3) from dual; MOD(10,3)
----------
1
SQL> select mod(10,0) from dual; MOD(10,0)
----------
10
ROUND(n,[m]) :该函数用于执行四舍五入运算;如果省略m,则四舍五入至整数位;如果m是负数,则四舍五入到小数点前m位;如果m是整数,则四舍五入至小数点后m位.示例如下:
SQL> select round(65.698) from dual; ROUND(65.698)
-------------
66 SQL> select round(65.698,1) from dual; ROUND(65.698,1)
---------------
65.7 SQL> select round(65.698,-1) from dual; ROUND(65.698,-1)
----------------
70
TRUNC(n,[m]) :该函数用于截取数字。如果省略数字m,则将数字n的小数部分截去;如果数字m是正数,则将数字n截取到小数点后的第m位;如果数字m是负数,则将数字n截取到小数点前m位.示例如下:
SQL> select trunc(65.698) from dual; TRUNC(65.698)
-------------
65 SQL> select trunc(65.698,2) from dual; TRUNC(65.698,2)
---------------
65.69 SQL> select trunc(65.698,1) from dual; TRUNC(65.698,1)
---------------
65.6 SQL> select trunc(65.698,-1) from dual; TRUNC(65.698,-1)
----------------
60 SQL> select trunc(65.698,-2) from dual; TRUNC(65.698,-2)
----------------
0
2、字符函数
字符函数的输入参数为字符类型,其返回值位字符类型或数字类型。字符函数既可以在SQL语句中使用,也可以在PL/SQL块中使用.
TRIM 函数的语法如下:
TRIM([ { { LEADING | TRAILING | BOTH }
[ trim_character ]
| trim_character
}
FROM
]
trim_source
)
下面的这种情况是用于截取特定的字符串:
DECLARE
v_source VARCHAR2(20) :='ABCDGHJHAB';
v_trim VARCHAR2(20);
BEGIN
v_trim:=trim('A' FROM v_source);
dbms_output.put_line(v_trim);
END;
下面的情况是去除字符串的行首和行尾的空格 ,为了便于理解,用length函数打印trim截取字符串后的长度:
SQL> select length(trim(' hello ')) from dual; ----什么都不写,默认情况下截取两端的空格
LENGTH(TRIM('HELLO'))
---------------------
5
SQL> select length(trim(leading from ' hello')) from dual; ------leading 截取字符串前面空格
LENGTH(TRIM(LEADINGFROM'HELLO'
------------------------------
5
SQL> select length(trim(trailing from ' hello ')) from dual; ---trailing 截取字符串后面空格
LENGTH(TRIM(TRAILINGFROM'HELLO
------------------------------
6
SQL> select length(trim(both from ' hello ')) from dual; -----both 截取两端的空格
LENGTH(TRIM(BOTHFROM'HELLO'))
-----------------------------
5
ASCII(char):该函数用于返回字符串首字符的ASCII值,示例如下:
SQL> select ascii('a') "a" ,ascii('A') "A" from dual;
a A
---------- ----------
97 65
CHR(char) :该函数用于将ASCII码值转变为字符。示例如下:
SQL> select chr('97') from dual;
CHR('97')
---------
a
SQL> select chr('56') from dual;
CHR('56')
---------
8
CONCAT:该函数用于连接字符串,其作用于连接操作符(||)完全相同。示例如下:
SQL> select concat('Good','Morning') from dual;
CONCAT('GOOD','MORNING')
------------------------
GoodMorning
SQL> select 'Good'|| 'Morning' from dual;
'GOOD'||'MORNING'
-----------------
GoodMorning
LENGTH(char):该函数用于返回字符串的长度,如果字符串的类型为CHAR,则其长度包括所有的后缀空格:如果char是null,则返回null。示例如下:
SQL> select length('111') from dual;
LENGTH('111')
-------------
3
3、日期时间函数
日期时间函数用于处理DATE和TIMESTAMP类型的数据。 除了函数,MONTHS_BETWEEN返回数字值外,其它日志函数均返回DATE类型的数据.Oracle是以7位数字格式来存放日期数据的,包括世纪、年、月、日小时、分钟、秒,并且默认时间显示格式为"DD-MON-YY"。下面详细介绍Oracle所提供的日期时间函数,以及在SQL语句和PL/SQL块中使用这些函数的方法。
ADD_MONTHS(d,n):该函数用于返回特定日期时间 d 之后(或之前)的n个月所对应的日期时间(n为正整数表示之后,n为负整数表示之前).示例如下:
SQL> set serveroutput on;
SQL>
SQL> DECLARE
2 v_date DATE;
3 BEGIN
4 v_date:=add_months(sysdate,-12);
5 dbms_output.put_line('当前日期前14个月所对应的日期:'||v_date);
6 END;
7
8 / 当前日期前14个月所对应的日期:05-7月 -12 PL/SQL procedure successfully completed
TRUNC(d,[fmt]) :该函数用于截取日期时间数据.如果fmt指定年度,则结果为本年度的1月1日;如果fmt指定月,则结果为本月1日。示例如下:
----------月
SQL> select trunc(sysdate,'MONTH') from dual; TRUNC(SYSDATE,'MONTH')
----------------------
2013/7/1 SQL> select trunc(sysdate,'mm') from dual; TRUNC(SYSDATE,'MM')
-------------------
2013/7/1 ----------年
SQL> select trunc(sysdate,'YY') from dual; TRUNC(SYSDATE,'YY')
-------------------
2013/1/1 SQL> select trunc(sysdate,'YEAR') from dual; TRUNC(SYSDATE,'YEAR')
---------------------
2013/1/1
MOTNS_BETWEEN(d1,d2):该函数用于返回d1和d2之间相差的月数.如果d1小于d2,则返回负数;如果d1和d2的天数相同,或都是月底,则返回整数;否则Oracle以每月31天为准来计算结果的小数部分。示例如下:
SQL> select months_between(sysdate,'6-7月-1998') from dual; MONTHS_BETWEEN(SYSDATE,'6-7月-
------------------------------
180
NEXT_DAY(d,char):该函数用于返回指定日期后的第一个工作日(由char指定)所对应的日期。示例如下:
SQL> select next_day(sysdate,'星期日') from dual; NEXT_DAY(SYSDATE,'星期日')
--------------------------
2013/7/7 9:15:51 SQL> select next_day(sysdate,'星期一') from dual; NEXT_DAY(SYSDATE,'星期天')
--------------------------
2013/7/8 9:15:11
4、转换函数
转换函数用于将数值从一种数值类型转换为另一种数据类型。在某些情况下,Oracle Server会隐含地转换数据类型。但在编写应用程序时,为了防止出现编译错误,如果数据类型不同,那么应该使用转换函数进行类型转换.下面详细介绍Oracle所提供的转换函数,以及在SQL语句和PL/SQL块中使用这些转换函数的方法。
TO_CHAR(data[,fmt[,nls_param]]) :该函数用于将日期值转变为字符串,其中fmt用于指定日期格式,nls_param用于指定nls参数。示例如下:
SQL> select to_char(sysdate,'YYYY-MM-DD') from dual; TO_CHAR(SYSDATE,'YYYY-MM-DD')
-----------------------------
2013-07-06
TO_CHAR(n[,fmt[,nls_param]]):用于将数字值转换为VARCHAR2数据类型.示例如下:
SQL> select to_char(100) from dual; TO_CHAR(100)
------------
100
TO_DATE(char[,fmt[,nls_param]]):该函数用于将符合指定日期的函数转变为DATE类型的数值,示例如下:
SQL> select TO_DATE('01-01-2001','DD-MM-YYYY') from dual;
TO_DATE('01-01-2001','DD-MM-YY
------------------------------
2001/1/1
SQL> select TO_DATE('2001-01-01','YYYY-MM-DD') from dual;
TO_DATE('2001-01-01','YYYY-MM-
------------------------------
2001/1/1
附录:关于Decode函数
select sid,serial#,username,
DECODE(command,
0,’None’,
2,’Insert’,
3,’Select’,
6,’Update’,
7,’Delete’,
8,’Drop’,
‘Other’) cmmand
from v$session where username is not null;
Oracle经常用到的一些函数的更多相关文章
- ORACLE中的支持正则表达式的函数
ORACLE中的支持正则表达式的函数主要有下面四个:1,REGEXP_LIKE :与LIKE的功能相似2,REGEXP_INSTR :与INSTR的功能相似3,REGEXP_SUBSTR :与SUBS ...
- oracle的分析函数over 及开窗函数
转:http://www.2cto.com/database/201310/249722.html oracle的分析函数over 及开窗函数 一:分析函数over Oracle从8.1.6开 ...
- Oracle 中的 TO_DATE 和 TO_CHAR 函数
Oracle 中的 TO_DATE 和 TO_CHAR 函数oracle 中 TO_DATE 函数的时间格式,以 2008-09-10 23:45:56 为例 格式 说明 显示值 备注 Year(年) ...
- 【转】Oracle 中的 TO_DATE 和 TO_CHAR 函数 日期处理
Oracle 中的 TO_DATE 和 TO_CHAR 函数oracle 中 TO_DATE 函数的时间格式,以 2008-09-10 23:45:56 为例 格式 说明 显示值 备注 Year(年) ...
- .Net程序员学用Oracle系列(7):视图、函数、过程、包
<.Net程序员学用Oracle系列:导航目录> 本文大纲 1.视图 1.1.创建视图 2.函数 2.1.创建函数 2.2.调用函数 3.过程 3.1.创建过程 3.2.调用过程 4.包 ...
- Oracle中如何导出存储过程、函数、包和触发器的定义语句?如何导出表的结构?如何导出索引的创建语句?
Oracle中如何导出存储过程.函数.包和触发器的定义语句?如何导出表的结构?如何导出索引的创建语句? QQ群里有人问:如何导出一个用户下的存储过程? 麦苗答:方法有多种,可以使用DBMS_MET ...
- oracle中类似indexof用法_instr函数
oracle中类似indexof用法_instr函数 [sql] 在oracle中没有indexof()函数 但是提供了一个 instr() 方法 具体用法: select instr('保定市南市区 ...
- mysql中sql语句中常见的group_concat()函数意思以及用法,oracle中与其一样的功能函数是wmsys.wm_concat()
1.group_concat(),手册上说明:该函数返回带有来自一个组的连接的非NULL值的字符串结果.比较抽象,难以理解. 通俗点理解,其实是这样的:group_concat()会计算哪些行属于同一 ...
- oracle、sqlserver、mysql常用函数对比[to_char、to_number、to_date]
Oracle --> MySQL to_char(sysdat ...
随机推荐
- Strom数据流分组解析
本文可作为 <<Storm-分布式实时计算模式>>一书1.5节的读书笔记 数据流分组定义了一个数据流中的tuple如何分发给topology中不同bolt的task. Shuf ...
- Java并发框架——AQS之阻塞与唤醒
根据前面的线程阻塞与唤醒小节知道,目前在Java语言层面能实现阻塞唤醒的方式一共有三种:suspend与resume组合.wait与notify组合.park与unpark组合.其中suspend与r ...
- android布局Relative和gridLayout-android学习之旅(十六)
Relative布局简介 相对布局的组件是由兄弟组件和父组价决定的,因此这种布局被称为相对布局. 属性设置介绍 RelativeLayout.Layoutparam中只能设置为true和false的属 ...
- Android的TabHost组件-android的学习之旅(四十)
TabHost简介 虽然,官方建议用Fagment取代TabHost,但是我们还是大概的介绍一下.TabHost是一种非常简单的组件,TabHost可以很方便的在窗口放置多个标签页,每一个标签页相当于 ...
- 利用Dijkstra算法实现记录每个结点的所有最短路径
最近在做PAT时发现图论的一些题目需要对多条最短路径进行筛选,一个直接的解决办法是在发现最短路径的时候就进行判断,选出是否更换路径:另一个通用的方法是先把所有的最短路径记录下来,然后逐个判断.前者具有 ...
- Java 中Log4j的使用详情
Log4j 真的很简单,简单到令人发指的地步.不是要记录日志吗?那就给你一个Log ,然后你用Log 来写东西就行了,先来一个完整类示例: package test; import org.apach ...
- 一个CSS+jQuery的放大缩小动画效果
日期: 2013年9月23日 作者:铁锚 // 今天帮朋友写了一些代码,自己觉得写着写着,好几个版本以后,有点满意,于是就贴出来. // 都是定死了的.因为需求就只有4个元素.如果是要用CSS的cla ...
- Java中回调函数编写
package XXX.utils; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStr ...
- BottomSheet底部动作条使用
底部动作条 底部动作条(Bottom Sheets)是一个从屏幕底部边缘向上滑出的一个面板,使用这种方式向用户呈现一组功能.底部动作条呈现了简单.清晰.无需额外解释的一组操作. 使用环境 底部动作条( ...
- Category Protocol Exte…
作者:韩俊强 总结以往方法: 继承是可以完成对类型的扩充,不仅能添加方法,也可以添加实例变量:/缺点:如果工程中有很多需要扩充类的使用,此时要用子类去完成替换,工作量非常大,还容易出错.下面通过例子过 ...