当前位置:文档之家› oracle函数

oracle函数


1.1. Oracle常用函数

4.1.1 INSTR 函数的使用
概述:oracle的INSTR 函数相当于sql中的CHARINDEX函数

Sql用法格式:CHARINDEX (目标字符串 , 源字符串 [ , 起始位置 ])

例子1:SELECT CHARINDEX('C','ABCDE')

输出结果为:3

说明:在“源字符串”中查找“目标字符串”的位置。

例子2:SELECT CHARINDEX('C','ABCDEFXYZCQA',4)

输出结果为:10

说明:从“源字符串”的第4个字符(包含第4个字符)中查找“目标字符串”的位置。

Oracle用法格式:INSTR(源字符串, 目标字符串[,起始位置] [,匹配序号])

例子1:SELECT INSTR('CORPORATE FLOOR','OR', 3, 2) FROM DUAL;

输出结果:14

说明:目标字符串为'OR',起始位置为3,取第2个匹配项的位置。

默认查找顺序为从左到右。

例子2:SELECT INSTR('CSORPORATE FLOOR','OR', 3, 2) FROM DUAL;

输出结果:6

例子3:SELECT INSTR('CORPORATE FLOOR', 'OR', -1, 2) FROM DUAL;

输出结果:5

说明:当起始位置为负数的时候,从右边开始查找。

例子4:SELECT INSTR('CORPORATE FLOOR','OR') FROM DUAL;

输出结果:2

说明:此时默认起始位置1,匹配序号为1



4.1.2 SUBSTR 函数的使用

概述:oracle的SUBSTR函数相当于sql中的 SUBSTRING函数

Sql用法格式:SUBSTRING ( expression , start , length )

例子1:SELECT SUBSTRING('ABCDEFXYZCQA',4,3)

输出结果:DEF

说明:SELECT SUBSTRING('ABCDEFXYZCQA',4) 将报错:substring 函数要求有 3 个参数。

Oracle用法格式: substr( string, start_position [, length ] )

例子1:SELECT SUBSTR('THISISATEST', 6, 2) FROM DUAL;

输出结果:SA

说明:从第6个字符(包含第6个字符)开始取2位

例子 2:SELECT SUBSTR('THISISATEST', 6) FROM DUAL;

输出结果:SATEST

说明:从第6个字符(包含第6个字符)开始取到结束

例子3:SELECT SUBSTR('TECHONTHENET', -8, 5) FROM DUAL;

输出结果:ONTHE

说明:当起始位置为负数的时候,从右边开始查找。然后再从左往右取5位



4.1.3 NVL 函数的使用

概述:oracle的NVL函数相当于sql中的 ISNULL函数

Sql用法格式:ISNULL ( check_expression , replacement_value )

说明:在 check_expression 为 NULL时将返回replacement_value,否则返回check_expression 的值,replacement_value 必须与 check_expresssion 具有相同的类型。

Oracle用法格式:NVL ( check_expression , replacement_value )

说明:用法同上



4.1.4 CAST 函数的使用

概述:oracle的CAST函数与sql中的相同,将某种数据类型的表达式显式转换为另一种数据类型。

说明:对于将某种数据类型的表达式显式转换为另一种数据类型,sql中提供了cast

和convert两种函数

,但是oracle中没有convert函数而是提供其他的函数,

具体创建如下的TO_DATE、TO_CHAR、TO_NUMBER



4.1.5 TO_DATE 函数的使用

概述:是把字符串转换为数据库中的日期类型

例子:

当我们在翻译的时候定义变量V_FIELDVALUE 是一个 VARCAR2(20)的数据类型时,但是该变量需要作为一个过滤条件的值时如:

OPEN RCT1 FOR SELECT * FROM AIR_CC_HEADER A WHERE A.FLIGHT_TIME >= V_FLIGHTFROM;

这时必须把V_FLIGHTFROM变换为 Date类型:

V_FLIGHTFROM := TO_DATE(V_FIELDVALUE,'YYYY-MM-DD ,HH24:MI:SS')



4.1.6 TO_CHAR和 TO_NCHAR函数的使用

概述:是把日期或数字转换为字符串

例子1:

同样我们定义了变量V_FIELDVALUE的数据类型为VARCAR2(20),此时我想对该日期加上一天,再拼凑到动态的oracle语句中,我们该这么做:

OPEN RCT1 FOR 'SELECT * FROM AIR_CC_HEADER WHERE EXPIRE_DATE

<= TO_DATE(''' || TO_CHAR((TO_DATE(V_FIELDVALUE, 'YYYY-MM-DD HH24:MI:SS') + 1),'YYYY-MM-DD HH24:MI:SS') || ''',''YYYY-MM-DD HH24:MI:SS'')';

或者

OPEN RCT1 FOR 'SELECT * FROM AIR_CC_HEADER WHERE EXPIRE_DATE

<= TO_DATE(''' || V_FIELDVALUE || ''',''YYYY-MM-DD HH24:MI:SS'') + 1';

说明:Oracle中没有像sql中有CONVERT函数,所以在翻译过程中如果有遇到类似这样的sql语句:

CONVERT(VARCHAR(20), CTN_MADE_DATE, 120)

使用TO_DATE函数将其转换为如下写法:

TO_CHAR (CTN_MADE_DATE , 'YYYY-MM-DD HH24:MI:SS')

4.1.7 TO_NUMBER函数的使用

概述:是将字符转换为数字



4.1.8 LENGTH 函数的使用

概述:Oracle的LENGTH函数相当于Sql的LEN函数,用于计算字符串长度。



4.1.9 RTRIM和LTRIM 函数

概述:Oracle的RTRIM和LTRIM函数与Sql相同,RTRIM 删除字符变量中的尾随空格;LTRIM 字符删除字符变量中的起始空格。



4.1.10 REPLACE 函数的使用

概述:REPLACE('STRING','S1','S2'),STRING希望被替换的字符或变量,

S1被替换的字符串,S2要替换的字符串。

例子:SELECT REPLACE('ABC,DEF,GHI',',',':') FROM DUAL

输出结果:ABC:DEF:GHI



4.1.11 SYSDATE 函数的使用

概述:oracle的SYSDATE类似与sql的GETDATE()函数的功能,用户获取当前时间。

Sql用法格式:

例子1:SELECT GETDATE()

输出结果:2008-07-10 01:28:10.637

Oracle用法格式:

例子1:SELECT SYSDATE FROM DUAL

输出结果:2008-7-10 1:28:42



4.1.12 ADD_MONTHS()函数的使用

概述:ADD_MONTHS(X,Y)函数用于计算X加上Y个月的结果。如果Y是负数,就从X中减去Y个月。

例子1:SELECT ADD_MONTHS(TO_DATE('2007-7-7','YYYY-MM-DD'),2) FROM DUAL

输出结果:2007-9-7

例子2:SELECT ADD_MONTHS(TO_DATE('2007-7-7','YYYY-MM-DD'

),-2) FROM DUAL

输出结果:2007-5-7



4.1.13 LAST_DAY()函数的使用

概述:LAST_DAY(X)函数用于计算包含X的月的最后一天。

例子1:SELECT LAST_DAY(TO_DATE('2007-7-7','YYYY-MM-DD')) FROM DUAL;

输出结果:2007-7-31



4.1.14 NEXT_DAY()函数的使用

概述:NEXT_DAY(X,DAY)函数用于计算从X开始,下一个DAY的日期;参数DAY是一个文本字符串,

例如:星期一

例子1:SELECT NEXT_DAY(TO_DATE('2008-7-19','YYYY-MM-DD'),'星期一') FROM DUAL;

输出结果:2008-7-21

4.1.15 ROUND()函数的使用

概述:ROUND(X[,UNIT])函数用于对X进行取整。默认情况下,X取整为最近的一天。UNIT是一个可选字符串参数,它指明要取整的单元。

例子1:SELECT ROUND(TO_DATE('2007-5-7','YYYY-MM-DD'),'YY') FROM DUAL;

输出结果:2007-1-1

例子2:SELECT ROUND(TO_DATE('2007-8-7','YYYY-MM-DD'),'YY') FROM DUAL;

输出结果:2008-1-1

例子3:SELECT ROUND(TO_DATE('2007-5-7','YYYY-MM-DD'),'MM') FROM DUAL;

输出结果:2007-5-1

例子4:SELECT ROUND(TO_DATE('2007-5-17','YYYY-MM-DD'),'MM') FROM DUAL;

输出结果:2007-6-1

例子5:SELECT ROUND(TO_DATE('2007-5-7 11:10:23','YYYY-MM-DD HH24:MI:SS'),'DD') FROM DUAL;

输出结果:2007-5-7

例子6:SELECT ROUND(TO_DATE('2007-5-7 13:10:23','YYYY-MM-DD HH24:MI:SS'),'DD') FROM DUAL;

输出结果:2007-5-8

例子7:SELECT ROUND(TO_DATE('2007-5-7 13:10:23','YYYY-MM-DD HH24:MI:SS'),'HH24') FROM DUAL;输出结果:2007-5-7 13:00:00

例子8:SELECT ROUND(TO_DATE('2007-5-7 13:45:23','YYYY-MM-DD HH24:MI:SS'),'HH24') FROM DUAL;

输出结果:2007-5-7 14:00:00



4.1.16 TRUNC()函数的使用

概述:TRUNC(X,UNIT)函数用于对X进行截断。默认情况下,X被截断为当天的开始时间。UNIT是一个可选字符串参数,它指明要取整的单元。

例子1:SELECT TRUNC(TO_DATE('2007-5-7','YYYY-MM-DD'),'YY') FROM DUAL;

输出结果:2007-1-1

例子2:SELECT TRUNC(TO_DATE('2007-8-7','YYYY-MM-DD'),'YY') FROM DUAL;

输出结果:2007-1-1

例子3:SELECT TRUNC(TO_DATE('2007-5-7','YYYY-MM-DD'),'MM') FROM DUAL;

输出结果:2007-5-1

例子4:SELECT TRUNC(TO_DATE('2007-5-17','YYYY-MM-DD'),'MM') FROM DUAL;

输出结果:2007-5-1

例子5:SELECT TRUNC(TO_DATE('2007-5-7 11:10:23','YYYY-MM-DD HH24:MI:SS'),'DD') FROM DUAL;

输出结果:2007-5-7

例子6:SELECT TRUNC(TO_DATE('2007-5-7 13:10:23','YYYY-MM-DD HH24:MI:SS'),'DD') FROM DUAL;

输出结果:2007-5-7

例子7:SELECT TRUNC(TO_DATE('2007-5-7 13:10:23','YYYY-MM-DD HH24:MI:SS'),'HH24') FROM DUAL;输出结果:2007-5-7 13:00:00

例子8:SELECT TRUNC(TO_DATE('2007-5-7 13:45:23','YYYY-MM-DD HH24:MI:SS'),'HH24') FROM DUAL;

输出结果:2007-5-7 13:00:00

4.1.17 REPLICATE()函数的使用

Sql用法格式:

概述:REPLICATE([expression],[count])按指定次数重复字符表达式。

例子 :Select

Replicate('abc',2)

输出结果:abcabc

例子 :Select Replicate('abc',-2)

输出结果:null

例子 :Select Replicate('abc',0)

输出结果:无

Oracle用法格式:

DECLARE

V_COUNT INTEGER := 3;

V_RESULT VARCHAR(2000);

BEGIN

FOR I IN 1 .. V_COUNT LOOP

V_RESULT := V_RESULT || 'ABC';

END LOOP;

DBMS_OUTPUT.PUT_LINE(V_RESULT);

END;

相关主题
文本预览
相关文档 最新文档