首页 > 代码库 > Oracle基础笔记三

Oracle基础笔记三

第三章 单行函数


Oracle基础笔记二1.单行函数:

操作数据对象

接受参数返回一个结果

只对一行进行变换

每行返回一个结果

可以转换数据类型

可以嵌套

参数可以是一列或一个值


2.大小写控制函数:

LOWER(‘SQL Course‘) sql course

UPPER(‘SQL Course‘) SQL COURSE

INITCAP(‘SQL Course‘)         Sql Course


3.字符控制函数:

CONCAT(‘Hello‘, ‘World‘) HelloWorld

SUBSTR(‘HelloWorld‘,1,5) Hello

LENGTH(‘HelloWorld‘)         10

INSTR(‘HelloWorld‘, ‘W‘) 6

LPAD(salary,10,‘*‘) *****24000

RPAD(salary, 10, ‘*‘) 24000*****

TRIM(‘H‘ FROM ‘HelloWorld‘)         elloWorld

REPLACE(‘abcd’,’b’,’m’)                 amcd


4.数字函数:

ROUND: 四舍五入

ROUND(45.926, 2) 45.93


TRUNC: 截断

TRUNC(45.926, 2) 45.92


MOD: 求余

MOD(1600, 300)                 100


5.日期:

Oracle 中的日期型数据实际含有两个值: 日期和时间。

函数SYSDATE 返回:日期  时间


日期的数学运算:

①在日期上加上或减去一个数字结果仍为日期。


②两个日期相减返回日期之间相差的天数。

日期不允许做加法运算,无意义


③可以用数字除24来向日期中加上或减去天数。



6.日期函数:

MONTHS_BETWEEN         两个日期相差的月数

ADD_MONTHS 向指定日期中加上若干月数

NEXT_DAY 指定日期的下一个星期 * 对应的日期

LAST_DAY 本月的最后一天

ROUND 日期四舍五入

TRUNC 日期截断

例如:

MONTHS_BETWEEN (‘01-SEP-95‘,‘11-JAN-94‘)-------->19.6774194

ADD_MONTHS (‘11-JAN-94‘,6)              -------->‘11-JUL-94‘

NEXT_DAY (‘01-SEP-95‘,‘FRIDAY‘)         -------->‘08-SEP-95‘

LAST_DAY(‘01-FEB-95‘)                   -------->‘28-FEB-95‘


Assume SYSDATE = ‘25-JUL-95‘:

ROUND(SYSDATE,‘MONTH‘)         01-AUG-95

ROUND(SYSDATE ,‘YEAR‘)         01-JAN-96

TRUNC(SYSDATE ,‘MONTH‘)        01-JUL-95 

TRUNC(SYSDATE ,‘YEAR‘)         01-JAN-95


7.隐式数据类型转换:自动

   显式数据类型转换:

①TO_CHAR函数对日期的转换:

TO_CHAR(date, ‘format_model‘)

格式:

必须包含在单引号中而且大小写敏感。

可以包含任意的有效的日期格式。

日期之间用逗号隔开。

SELECT TO_CHAR(sysdate,‘yyyy-mm-dd hh:mi:ss’) FROM dual;


时间格式:  HH24:MI:SS AM

                   使用双引号向日期中添加字符   DD "of" MONTH


②TO_DATE 函数对字符的转换:

使用 TO_DATE :

TO_DATE(char[,‘format_model‘]) 

使用 TO_DATE 函数将字符转换成数字:

TO_DATE(‘2012年10月29日081021‘,‘yyyy"年"mm"月"dd"日"hh:mi:ss)

from dual

③TO_CHAR函数对数字的转换:

TO_CHAR(number, ‘format_model‘)

例如:

SELECT TO_CHAR(salary, ‘$99,999.00‘) SALARY

FROM   employees

WHERE  last_name = ‘Ernst‘;

④TO_NUMBER 函数对字符的转换 :

使用 TO_NUMBER 函数将字符转换成日期:TO_NUMBER(char[, ‘format_model‘])

使用 TO_NUMBER :TO_NUMBER(‘¥1,234,567,890.00’,’L999,999,999,999.99’)

from dual


8.通用函数:

这些函数适用于任何数据类型,同时也适用于空值:

①NVL (expr1, expr2)

将空值转换成一个已知的值:

可以使用的数据类型有日期、字符、数字。

函数的一般形式:

NVL(commission_pct,0)

NVL(hire_date,‘01-JAN-97‘)

NVL(job_id,‘No Job Yet‘)


②NVL2 (expr1, expr2, expr3) : expr1不为NULL,返回expr2;为NULL,返回expr3。


③NULLIF (expr1, expr2) :  相等返回NULL,不等返回expr1 


④COALESCE (expr1, expr2, ..., exprn)

COALESCE 与 NVL 相比的优点在于 COALESCE 可以同时处理交替的多个值。

如果第一个表达式为空,则返回下一个表达式,对其他的参数进行COALESCE 。


9.条件表达式:

在 SQL 语句中使用IF-THEN-ELSE 逻辑

使用两种方法:

CASE 表达式:

CASE expr WHEN comparison_expr1 THEN return_expr1

         [WHEN comparison_expr2 THEN return_expr2

          WHEN comparison_exprn THEN return_exprn

          ELSE else_expr]

END


DECODE 函数:

DECODE(col|expression, search1, result1 ,

        [, search2, result2,...,]

        [, default])
















本文出自 “阿成的博客” 博客,转载请与作者联系!

Oracle基础笔记三