日期:2014-05-16  浏览次数:20489 次

ORACLE 单行函数和分组统计总结Top-N
alter session set nls_date_language='AMERICAN';
DD-MM-RR



单行函数

这些函数仅对单个行进行运算,并且每行返回一个结果。有不同类型的单行函数,本课下面的函数类型:
::字符
::数字
::日期
::转换

单行函数:
:操纵数据项
:接受多个参数并返回一个值
:作用于每一个返回行
:每行返回一个结果
:可以修改数据类型
:可以嵌套
:接受多个参数,参数可以是一个列或者一个表达式

单行函数的特性包括:
:: 作用于查询中返回的每一行
:: 每行返回一个结果
:: 可能返回一个与参数不同类型的数据值
:: 可能需要一个或多个参数
:: 能够用在SELECT、WHERE和ORDER BY子句中;可以嵌套

多行函数
这些函数能够操纵成组的行,每个行组给出一个结果,这些函数也被称为组函数。


::字符函数:接受字符输入,可以返回字符或者数字值
::数字函数:接受数字输入,返回数字值
::日期函数:对DATE数据类型的值进行运算 (除了MONTHS_BETWEEN函数返回一个数字,所有日期函数都返回一个DATE数据类型的值。)
:: 转换函数:从一个数据类型到另一个数据类型转换一个值
:: 通用函数:
: NVL
: NVL2
: NULLIF
: COALSECE
: CASE
: DECODE

大小写处理函数:lower ,upper,initcap
字符函数
字符处理函数  :concat,substr,length,instr   lpad|rpad ,trim,replace


LOWER(column|expression)
转换字符值为小写
UPPER(column|expression)
转换字符值为小写
INITCAP(column|expression)
转换每个单词的首字母值为大写,所有其它值为小写
CONCAT(column1|expression1,column2|expression2)
连接第一个字符值到第二个字符值;等价于连接运算符 (||)
SUBSTR(column|expression,m[,n])
从字符返值中回指定的字符,开始位置在 m,n字符长度 (如果 m 是负数,计数从字符值末尾开始;如果 n 被忽略,返回到串结束的所有字符)。
LENGTH(column|expression)
返回表达式中的字符数
INSTR(column|expression,‘string’, [,m], [n] )
返回一个命名串的数字位置。随意地,你可以提供一个位置m作为查找的开始,在字符串中第n次发现的位置。m和n的默认值是1,意味着在起始开始查找,并且报告第一个发现的位置。
LPAD(column|expression, n,'string')
RPAD(column|expression, n,'string')
填充字符值左、右调节到n字符位置的总宽度
TRIM(leading|trailing|both, trim_character FROM trim_source)
使你能够从一个字符串修整头或尾字符(或两者)。如果trim_character或trim_source是字符文字,你必须放在单引号中。
REPLACE(text, search_string, replacement_string)
从字符串查找一个文本表达式,如果找到,用指定的置换串代替它


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 从一个字符串中去除头或尾字符(或两者)

字符处理函数。
:: CONCAT:连接值在一起 (CONCAT 函数有两个输入参数)
:: SUBSTR:选取给定位置和长度的子字符串
:: LENGTH:以数字值显示一个字符串的长度
:: INSTR:找到一个给定字符的数字位置
:: LPAD:用给定的字符左填充字符串到给定的长度
:: RPAD:用给定的字符右填充字符串到给定的长度
:: TRIM:从一个字符串中去除头或尾的字符 (或头和尾) (如果 trim_character 或 trim_source 是一个文字字符,必须放在单引号中。)



数字函数

::ROUND:四舍五入指定小数的值 ROUND(45.926, 2)  45.93
ROUND(45.923,-1)  50 ROUND(45.923,0)   46
::TRUNC: 截断指定小数的值 TRUNC(45.926, 2)  45.92
TRUNC(45.923)   45 TRUNC(45.923,-2)  0
::MOD: 返回除法的余数 MOD(1600, 300)    100

ROUND(column|expression, n)
四舍五入列、表达式或值为n位小数位,或者,如果n被忽略,无小数位。(如果n是负值,小数点左边的数被四舍五入)
TRUNC(column|expression,n)
截断列、表达式或值到n位小数,或者,如果n被忽略,那么n默认为0
MOD(m,n)
返回m除以n的余数

ROUND 函数
ROUND函数四舍五入列、表达式或者n位小数的值。如果第二个参数是0或者缺少,值被四舍五入为整数。如果第二个参数是2,值被四舍五入为两位小数。如果第二个参数是–2,值被四舍五入到小数点左边两位。 ROUND函数也能够被用于日期函数

TRUNC 函数
TRUNC函数截断列、表达式或者n位小数值。
TRUNC函数对参数起的作用类似于ROUND函数。如果第二个参数是0或者缺少,值被截断为整数。如果第二个参数是2,值被截断为两位小数。如果第二个参数是–2,值被截断到小数点左边两位。 象ROUND函数,TRUNC函数也可以被用于日期函数。


MOD函数经常用于确定一个值是奇数还是偶数。

ALTER SESSION SET NLS_DATE_FORMAT = ‘date format model’;


日期的使用

Oracle 数据库用内部数字格式存储日期:世纪,年,月,日,小时,分钟和秒
::默认日期显示格式是DD-MON-RR.
–仅指定年的最后两位数字,允许你存储21世纪日期在20世纪中
–用同样的方式,允许你存储20世纪的日期在21世纪中

,雇员Gietz的HIRE_DATE是以默认格式DD-MON-RR显示的,然而,存储在数据库的日期不是这种格式,所有的日期和时间的组成部分都会被存储。所以,尽管一个HIRE_DATE ,例如07-JUN-94被显示为天、月和年,也还有时间和世纪信息伴随它。完整的日期可能是1994年7月7日 5:10:43 p.m (June 7th, 1994 5:10:43 p.m)。
该日期在内部存储如下:
CENTURY YEAR MONTH DAY HOUR MINUTE SECOND
  19 94    06  07 5    10     43


DATE数据类型总是以4