好学IT学院:IT信息技术分享交流平台
来源:互联网  作者:佚名  发布时间:2008-08-15  ★★★加入收藏〗〖手机版
摘要:Oracle的SQL函数分为单行函数和多行函数。单行函数只对单条记录有效,多行函数对多条记录有效。单行函数包括,字符、数字、日期、转换和普通函数。字符函数举例:全小写 LOWER(’SQL Course’)sql course全大写 UPP……

Oracle的SQL函数分为单行函数和多行函数。单行函数只对单条记录有效,多行函数对多条记录有效。

单行函数包括,字符、数字、日期、转换和普通函数。

字符函数举例:

全小写  LOWER('SQL Course')    sql course
全大写 UPPER('SQL Course')      SQL COURSE
首字母大写 INITCAP('SQL Course')  Sql Course
拼接 CONCAT('Good', 'String')    GoodString
取子串  SUBSTR('String',1,3)      Str
求长度   LENGTH('String')     6

数字函数举例:
ROUND -- 对数值进行四舍五入操作
TRUNC -- 截断。注意截断和舍入的位数,可以是负数。
ROUND (45.923, 2)      45.92
ROUND (45.923, 0)      46
ROUND (45.923, -1)     50
TRUNC (45.923, 2)      45.92
TRUNC (45.923)       45
TRUNC (45.923, -1)     40

MOD -- 返回两数相除的余数

MOD(1600, 300) --    100

日期函数:
Oracle将日期按照内部格式将日期存成以下七个字节–世纪、年、月、日、时、分、秒。在Oracle中日期缺省的显示格式为:DD - MON - YY 。
可以使用系统变量  SYSDATE 获取系统时间。查看 SYSDATE时,可以使用虚拟表DUAL。

举例:
求两个日期间有多少个月份   MONTHS_BETWEEN('01-SEP-95','11-JAN-94')          1.9774194
在日期上加指定的月数        ADD_MONTHS('11-JAN-94',6)                             '11-JUL-94'
下一个星期几是什么时候     NEXT_DAY('01-SEP-95','FRIDAY')                        '08-SEP-95'
某月最后一天                LAST_DAY('01-SEP-95')                                 '30-SEP-95'

把日期四舍五入到月份        ROUND('25-MAY-95','MONTH')                            01-JUN-95
                            ROUND('25-MAY-95 ','YEAR')                            01-JAN-95
把日期截断到月份            TRUNC('25-MAY-95 ','MONTH')                           01-MAY-95
                            TRUNC('25-MAY-95 ','YEAR')                            01-JAN-95

转换函数

TO_CHAR 将数字或日期转换为字符串
TO_NUMBER 将字符串转换成数字
TO_DATE 将字符串转换成日期
在转换函数中会使用格式串
 
TO_CHAR(date, 'fmt')
格式串包含在''中, 大小写敏感, 可以是任意有效的日期
格式
格式串:
YYYY 表示完整的四位数字年
YEAR 表示英文拼写的年
MM 表示两位数字月
MONTH 表示英文全拼的年
DY 表示三位缩写的星期
DAY 表示英文全拼的星期
 
一些特殊用法:
时间格式
          HH24:MI:SS AM  15:45:32 PM
          
在格式串中加入字符串
          DD " of " MONTH  12 of OCTOBER
          
用后缀拼出整个日期
          ddspth  fourteenth

TO_CHAR(number, 'fmt')
使用此函数将数字转换成数字
  9  表示数字
  0  强制为0
  $  设置美元符号
  L  使用当前字符集的货币符号
  .  小数点
  ,  千位分隔符
 
可以使用TO_NUMBER将字符串转换成数字
可以使用TO_DATE将字符串转换成格式日期
TO_DATE ('10 September 1992', 'dd Month YYYY')

使用格式串
TO_DATE(char  [, 'fmt'])
 
普通函数
NULL值处理函数

NVL (expr1, expr2)
  如果expr1为NULL,返回expr2
NVL2 (expr1, expr2, expr3)
  如果expr1为非空,则返回expr2,如果expr1为NULL,则返回expr3
NULLIF (expr1, expr2)
  如果expr1=expr2,返回NULL,否则返回expr1

COALESCE (expr1, expr2, ..., exprn)
  返回表达式列表中的第一个非空表达式

条件表达式,用case表达式或decode实现条件逻辑
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])

分组函数:
AVG (DISTINCT|ALL|n)
COUNT (DISTINCT|ALL|expr|*)
MAX (DISTINCT|ALL|expr)
MIN (DISTINCT|ALL|expr)
STDDEV (DISTINCT|ALL|n)
SUM (DISTINCT|ALL|n)
VARIANCE (DISTINCT|ALL|n)

Oracle数据库设计要做到五戒
  众所周知,数据库设计的好坏直接关系到数据库运行的效率。根据笔者的经验,对于提升数据库性能来说,合理的数据库设计,比升级服务器的硬件…
  • 好学考试H5触屏版开放内测
  • 好学触屏公众号虎力全开、杨帆起航!