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 ...
随机推荐
- 在Android Studio 上安装Genymotion插件
首先去官网http://www.genymotion.net/下载Genymotion并安装好. 其次打开AS的设置界面,找到Plugins插件目录 然后在搜索里搜Genymotion,然后点击Bro ...
- 探索Antlr(Antlr 3.0更新版)
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明 http://www.blogbus.com/dreamhead-logs/10756716.html <探索Antlr> ...
- [Mysql]备份同库中一张表的历史记录 insert into ..select
需求 现在有个这么一个需求,mysql中有个表,数据增长的很快,但是呢这个数据有效期也就是1个月,一个月以前的记录不太重要了,但是又不能删除.为了保证这个表的查询速度,需要一个简单的备份表,把数据倒进 ...
- OC语言编写:为视图添加丝滑的水波纹
先看一下最终效果图: 首先我们可以把如此丝滑的水波纹拆分一下下: 一条规律的曲线. 曲线匀速向右移动. 曲线下方的位置用颜色填充. 于是先来一条曲线吧. 对于需要产生波动如此规律的曲线,我们首先想到的 ...
- linux服务器批量部署应用系统shell脚本(Tomcat/jetty)
linux服务器批量部署应用系统shell脚本: 1.请更换代码内的服务器地址(Tomcat或jetty服务器) serverRoot=/home/undoner/java_tool/apache-t ...
- memcached 详解
Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached ...
- Touch Handling in Cocos2D 3.x(七)
在touchMoved方法中寻找触摸在父节点(CCScene)中的位置并且移动CCDragSprite到其父节点的相应位置中去. 在我们在动作中观赏拖放机制之前,我们需要使用这个新实现的类.打开Mai ...
- C++对象模型(四):class成员初始化列表(Member Initialization List)
本文是Inside C++ Object Model Chapter 2 部分的读书笔记. 编译器如何处理初始化成员列表的. 下列情况中,必须要使用member initialization list ...
- C语言的引用计数与对象树
引用计数与对象树 cheungmine 2013-12-28 0 引言 我们经常在C语言中,用指针指向一个对象(Object)的结构,也称为句柄(Handle),利用不透明指针的技术把结构数据封装成对 ...
- PorterDuffXferMode不正确的真正原因PorterDuffXferMode深入试验)
菜鸡wing遇敌PorterDuffXferMode,不料过于轻敌,应战吃力.随后与其大战三天三夜,三百余回合不分胜负.幸得 @咪咪控 相助,侥幸获胜. 关键字:PorterDuffXferMode ...