程序员人生 网站导航

oracle之单行函数

栏目:互联网时间:2014-11-03 08:31:54


单行函数
①.字符函数
LOWER(x):将x中的每一个单词都转换成小写
UPPER(x):将x中的每一个单词都转换成大写
INITCAP(x): 将x中的每一个单词的首字母转换成大写
CONCAT(x,y):用于将y添加到x以后,与||功能1样
SUBSTR(x,start[,length]):  用于从x中获得从start位置开始的1个子字符串,
   可选参数length:指定子字符串的长度,若未给定,1直取到字符串的最后
LENGTH(x):返回x中字符的个数
INSTR(x,find_string[,start][,occurence]):在x中查找find_string,返回find_string所在的位置,
   可选参数start:说明从x中的哪一个位置开始查找,第1个位置为1.
   可选参数occurence:说明应当返回find_string第几次出现的位置
LPAD(x, width [,pad_string]):用于将x的左侧补齐空格,使总长度到达width个字符
   可选参数pad_string:若给定,就将x的左侧补齐pad_string字符
RPAD(x,width[,pad_string]):用于将x的右侧补齐空格,使总长度到达width个字符
   可选参数pad_string:若给定,就将x的右侧补齐pad_string字符
TRIM(x[,trim_string]):用于从x的左右两边截去1些空格
   可选参数trim_string:若给定,则从x的左右两边截去1些trim_string字符
REPLACE(x,search_string,repalce_string):用于在x中查找search_string,并将其替换为replace_string
②数字函数
4舍5入:ROUND(x[,y])用于计算对x取整结果
   可选参数y:说明对第几位小数取整,如果没有指定y,则对x在0位小数处取整
   如果y为负数,则对x在小数点的左侧的第|y|位处取整
截断:TRUNC(x[,y])用于计算对x截断的结果
   可选参数y:说明对第几位小数截断,如果没有指定y,则对x在0位小数处截断
   如果y是负数,则对x在小数点的左侧的第|y|位处截断
求余:MOD(x,y):用于计算x除以y所得的余数
③日期函数
MONTHS_BETWEEN(date1,date2):两个日期相差的月数
ADD_MONTHS(date1,addMonth):向指定日期中加上若干月数
NEXT_DAY(date1,'星期1'):返回下1个星期1的日期
LAST_DAY(date1):本月的最后1天
ROUND(date1,'year'):把date1按年4舍5入,month、day、hh、mi分别是按月、日、时、分,进行4舍5入
TRUNC(date,'month'):把date1按年截断,month、day、hh、mi分别是按月、日、时、分,进行截断
④转换函数
TO_CHAR(date, 'format_model'):按format_model格式,格式化date:"yyyy-mm-dd HH24:MI:SS",返回1个字符串
TO_CHAR(number, 'format_model'):按format_model格式,格式化number:"$99,999.99",返回1个字符串
TO_DATE(char[, 'format_model']):使用 TO_DATE 函数将字符按format_model格式转换成日期:"yyyy-mm-dd HH24:MI:SS"
TO_NUMBER(char[, 'format_model']):使用 TO_NUMBER 函数将字符按format_model格式转换成数字:"$99,999.99"
⑤通用函数:这些函数适用于任何数据类型,同时也适用于空值
NVL (expr1, expr2):如果expr1为null,则返回expr2,若不为null,则返回expr1
NVL2 (expr1, expr2, expr3)如果expr1不为null,则返回expr2,若为null,则返回expr3
NULLIF (expr1, expr2):expr1与expr2相等返回NULL,不等返回expr1
COALESCE (expr1, expr2, ..., exprn):顺次参考各参数表达式,遇到非null值即停止并返回该值。
如果所有的表达式都是空值,终究将返回1个空值。使用COALESCE在于大部份包括空值的表达式终究将返回空值。
⑥条件表达式
1)CASE 表达式
case..when..then..
Case表达式,是可以在sql中使用if ..then..else的逻辑判断,而避免使用PL/SQL的有效方法。
在sql中主要有两种:简单case和搜索case,在plsql中还有两种case 语句,与decode 类似。(有1定的区分)
简单的case:
语法:case exp when comexp then returnvalue
            ..when comexp then returnvalue
              Else  Returnvalue
              End
使用规则case简介。
Case到end之间相当于1个具体的值,可以做运算,取别名,嵌套case 等等。只要把case到end当作1个运算结果的表达式就能够了。
《注意,中间1直到end 都没有其他标点符号》

搜索case:
SELECT cust_last_name,
CASE credit_limit WHEN 100 THEN ’Low’
           WHEN 5000 THEN ’High’
                  ELSE ’Medium’
    END
FROM customers;

搜索case例子

select case when id between 1 and 10 then 'low'
when id between 20 and 30 then 'mid'
when id between 40 and 50 then 'high'
else 'unknow'
end
from product;

update emp set
salary=
case when salary<2000 then salary*1.1
when salary between 2000 and 4000 then salary*1.05
when salary>4000 then salary*1.04
else
null
end;

select case when name like '全球%' then 'true'
when name like '神州行' then 'false'
else 'mm'
end
from trademark;
比较操作,可使用like,between … and ..,!=,<,>=等操作符和其他返回boolean类型的操作符。

简单case和searched case之间的区分:
1. 简单case只能是when后面的表达式完全匹配case后的表达式,相当于 =,所以也不能匹配null。
2. searched case可以作为比较条件,那末可使用like,!=,between ..and,<,=,is null,is not null等,比简单case的使用更加广泛,完全可以替换简单case。

2)DECODE 函数
DECODE 中的if-then-else逻辑
在逻辑编程中,常常用到If

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐