1. sign函数

sign函数语法:

 sign(n);

sign函数说明:

取数字n的符号,大于0返回1,小于0返回-1,等于0返回0(n可以是表达式,(n-200))

例子:

a=10;
b=50;
sign(a-b) ==-1
sign(b-a) == 1
sign(a-10)==0

2. decode函数

decode函数语法:

 decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值)

decode函数说明:

IF 条件=值1 THEN
    RETURN(翻译值1)
ELSIF 条件=值2 THEN
    RETURN(翻译值2)
    ......
ELSIF 条件=值n THEN
    RETURN(翻译值n)
ELSE
    RETURN(缺省值)
END IF

decode(字段或字段的运算,值1,值2,值3) 这个函数运行的结果是,当字段或字段的运算的值等于值1时,该函数返回值2,否则返回值3。

当然值1,值2,值3也可以是表达式,这个函数使得某些sql语句简单了许多

例子:

有一张user表 这张表中有一个sex(性别)字段,但是字段的值是1或者0,我们需求是显示男或者女,因此处理,那么decode就可以解决了

select decode(u.sex ,1,男,女) from user u;

比较大小(结合sign):

   a = 10,
b=50.
decode(sign(a-b),1,'a>b',sign(a-b),0,'相等','a<b');

上面语句转换一下成java:

    if((a-b)>=1)
{
return 'a>b';
}
else if((a-b)==0)
{
return '相等'
}
else{return 'a<b'}

3.NVL函数

NVL函数语法:

NVL(E1, E2)

NVL函数说明:

如果E1为NULL,则函数返回E2,否则返回E1本身。但此函数有一定局限,所以就有了NVL2函数。

对数字型: NVL( comm,0);
对字符型 NVL( TO_CHAR(comm), 'No Commission')
对日期型 NVL(hiredate,' 31-DEC-99')

例子:

查询某个员工年薪,如果为空则用0代替

select (sal+nvl(comm,o))*12 from emp where emp.pno=:pno;

这里,comm是未定义的变量,代指数字类型。 nvl返回为0.

拓展:

NVL2函数:Oracle/PLSQL中的一个函数,Oracle在NVL函数的功能上扩展,提供了NVL2函数。

NVL2(E1, E2, E3)的功能为:如果E1为NULL,则函数返回E3,若E1不为null,则返回E2。

4. ROUND函数

ROUND函数语法:

ROUND(number[,decimals])

ROUND函数说明:

其中:number 待做截取处理的数值

decimals 指明需保留小数点后面的位数。可选项,忽略它则截去所有的小数部分,并四舍五入。如果为负数则表示从小数点开始左边的位数,相应整数数字用0填充,小数被去掉。需要注意的是,和trunc函数不同,对截取的数字要四舍五入。

例子:

SQL>   select   round(1234.5678,2)   from   dual;

ROUND(1234.5678,2)
——————
1234.57
SQL> select round(1234.5678,0) from dual; ROUND(1234.5678,0)
——————
1235
SQL> select round(1234.5678,-2) from dual; ROUND(1234.5678,-2)
——————-
1200

5. trunc函数

trunc函数语法

5.1 TRUNC(number,num_digits)

Number 需要截尾取整的数字。

Num_digits 用于指定取整精度的数字。Num_digits 的默认值为 0。

TRUNC()函数截取时不进行四舍五入

TRUNC(89.985,2)=89.98
TRUNC(89.985)=89
TRUNC(89.985,-1)=80

5.2 TRUNC(date[,fmt])

date 一个日期值

fmt 日期格式,该日期将由指定的元素格式所截去。

忽略它则由最近的日期截去

1.select trunc(sysdate) from dual --2013-01-06 今天的日期为2013-01-06
2.select trunc(sysdate, 'mm') from dual --2013-01-01 返回当月第一天.
3.select trunc(sysdate,'yy') from dual --2013-01-01 返回当年第一天
4.select trunc(sysdate,'dd') from dual --2013-01-06 返回当前年月日
5.select trunc(sysdate,'yyyy') from dual --2013-01-01 返回当年第一天
6.select trunc(sysdate,'d') from dual --2013-01-06 (星期天)返回当前星期的第一天
7.select trunc(sysdate, 'hh') from dual --2013-01-06 17:00:00 当前时间为17:35
8.select trunc(sysdate, 'mi') from dual --2013-01-06 17:35:00 TRUNC()函数没有秒的精确

6. (+)符号

对于外连接, 也可以使用“(+) ”来表示。 关于使用(+)的一些注意事项:

  1. (+)操作符只能出现在where子句中,并且不能与outer join语法同时使用。
  2. 当使用(+)操作符执行外连接时,如果在where子句中包含有多个条件,则必须在所有条件中都包含(+)操作符。
  3. (+)操作符只适用于列,而不能用在表达式上。
  4. (+)操作符不能与or和in操作符一起使用。
  5. (+)操作符只能用于实现左外连接和右外连接,而不能用于实现完全外连接。

6.1 左外连接(Left outer join/ left join)

 left join是以左表的记录为基础的,示例中Dave可以看成左表,BL可以看成右表,它的结果集是Dave表中的数据,在加上Dave表和BL表匹配的数据。换句话说,左表(Dave)的记录将会全部表示出来,而右表(BL)只会显示符合搜索条件的记录。BL表记录不足的地方均为NULL。
select * from dave a left join bl b on a.id = b.id;
select * from dave a,bl b where a.id=b.id(+); -- 注意: 用(+) 就要用关键字where

6.2 右外连接(right outer join/ right join)

和left join的结果刚好相反,是以右表(BL)为基础的, 显示BL表的所以记录,在加上Dave和BL 匹配的结果。 Dave表不足的地方用NULL填充。
select * from dave a right join bl b on a.id = b.id;
select * from dave a,bl b where a.id(+)=b.id;

6.3 全外连接(full outer join/ full join)

 左表和右表都不做限制,所有的记录都显示,两表不足的地方用null 填充。 全外连接不支持(+)这种写法。
select * from dave a full join bl b on a.id = b.id;

7. instr函数

instr函数语法:

instr(sourceString,destString [,start] [,appearPosition])

instr函数说明:

主要用于从一个字符串中查找指定子串的位置。

instr('源字符串' , '目标字符串' ,'开始位置','第几次出现')

其中sourceString代表源字符串;destString代表要从源字符串中查找的子串;start代表查找的开始位置,这个参数可选的,默认为1;appearPosition代表想从源字符中查找出第几次出现的destString,这个参数也是可选的, 默认为1 。

如果start的值为负数,则代表从右往左进行查找,但是位置数据仍然从左向右计算。

返回值为:查找到的字符串的位置。

例子:

SQL> select instr('abcdefgh','de') position from dual;  --从1开始算 d排第四所以返回4 

POSITION
----------
4 SQL>select instr('abcdefghbc','bc',3) position from dual; --从第3个字符开始算起 第3个字符是c,所以从3开始以后的字符串找查找bc,返回9 POSITION
----------
9 SQL> select instr('qinyinglianqin','qin', 1, 2) position from dual; --从第1个字符开始,查找第2次出现子串的位置 POSITION
----------
12

8. substr函数

substr函数语法

SUBSTR(cExpression,nStartPosition [,nCharactersReturned])

substr函数说明

主要作用是从给定的字符表达式或备注字段中返回一个子字符串。

cExpression指定要从其中返回字符串的字符表达式或备注字段; nStartPosition用于指定返回的字符串在字符表达式或备注字段中的位置;nCharactersReturned用于指定返回的字符数目,缺省时返回字符表达式的值结束前的全部字符。

例子

SQL> select SUBSTR('abcdefghijklm' ,1,5) position from dual;

POSITION
----------
abcde SQL> select SUBSTR('abcdefghijklm' ,6) position from dual; POSITION
----------
fghijklm SQL> select SUBSTR('abcdefghijklm' ,-2) position from dual; POSITION
----------
lm

9. replace函数

replace函数语法

REPLACE ( 'string_expression1' , 'string_expression2' , 'string_expression3' )

replace函数解释

replace('将要更改的字符串','被替换掉的字符串','替换字符串')

例子:

SQL> select REPLACE('abcdefghicde','cde','xxx') position from dual;

   POSITION
---------------
abxxxfghixxx

Oracle中sign/decode/nvl/round/trunc/(+)/instr/substr/replace解释的更多相关文章

  1. Oracle中sign函数和decode函数的使用

    Oracle中sign函数和decode函数的使用 1.比较大小函数SIGN sign(x)或者Sign(x)叫做 符号函数,其功能是取某个数的符号(正或负): 当x>0,sign(x)=1; ...

  2. 问题:oracle decode;结果:oracle中的decode的使用

    oracle中的decode的使用 Oracle 中 decode 函数用法 含义解释:decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 该函数的含义如下:IF 条件 ...

  3. oracle中的DECODE

    原文:oracle中的DECODE   DECODE函数相当于一条件语句(IF).它将输入数值与函数中的参数列表相比较,根据输入值返回一个对应值.函数的参数列表是由若干数值及其对应结果值组成的若干序偶 ...

  4. Oracle 中的 decode

    含义解释:decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 该函数的含义如下:IF 条件=值1 THEN RETURN(翻译值1)ELSIF 条件=值2 THEN R ...

  5. oracle中的decode的使用

    含义解释:decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 该函数的含义如下:IF 条件=值1 THEN RETURN(翻译值1)ELSIF 条件=值2 THEN R ...

  6. oracle中的decode的使用(转)

    地址:http://www.cnblogs.com/juddhu/archive/2012/03/07/2383101.html 含义解释:decode(条件,值1,返回值1,值2,返回值2,...值 ...

  7. oracle 中的decode函数

    decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 该函数的含义如下:IF 条件=值1 THEN RETURN(翻译值1)ELSIF 条件=值2 THEN RETURN ...

  8. oracle中regexp_like/instr/substr/replace介绍和例子

    ORACLE中的支持正则表达式的函数主要有下面四个: 1,REGEXP_LIKE :与LIKE的功能相似 2,REGEXP_INSTR :与INSTR的功能相似 3,REGEXP_SUBSTR :与S ...

  9. 数据库ORACLE中函数decode的用法

    Decode函数与一系列嵌套的 IF-THEN-ELSE语句相似 decode()函数简介: 使用方法: Select decode(columnname,值1,翻译值1,值2,翻译值2,...值n, ...

随机推荐

  1. java.lang.NegativeArraySizeException

    两台android设备发送图片. 发送端: Socket socket = null; try { socket = new Socket(ip, 8888); byte[] bytes = Scre ...

  2. BZOJ 3391 [Usaco2004 Dec]Tree Cutting网络破坏(树形DP)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3391 [题目大意] 给定一棵树,求分支size均不大于一半点数的点 [题解] 递归的同 ...

  3. 【枚举】XVII Open Cup named after E.V. Pankratiev Stage 4: Grand Prix of SPb, Sunday, Octorber 9, 2016 Problem D. Cutting Potatoes

    题意:有n个土豆,每个有体积V(i),你可以将每个土豆等分为不超过K份,问你最大块和最小块比值最小为多少. 直接枚举切法,只有n*K种,然后保证其为最大块,去算其他块的切法,即让其他块切得尽可能大即可 ...

  4. python3-开发进阶 heapq模块(如何查找最大或最小的N个元素)

    一.怎样从一个集合中获得最大或者最小的 N 个元素列表? heapq 模块有两个函数:nlargest() 和 nsmallest() 可以完美解决这个问题. import heapq nums = ...

  5. 操作系统--IO系统任务简述

    内核IO---操作系统对于IO的职责 1.对文件和设备命名空间的管理 2.文件和设备访问的控制 3.IO操作控制 4.文件系统的空间分配 5.设备分配 6.IO缓冲管理 7.IO调度方式 8.设备状态 ...

  6. django, form.errors处理

    from.errors其实就是一个字典, 可以利用for error in form.errors.values, 或者for key,  value in form.errors遍历得到其中的数据

  7. Hiho----拓扑排序

    拓扑排序·一 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 由于今天上课的老师讲的特别无聊,小Hi和小Ho偷偷地聊了起来. 小Ho:小Hi,你这学期有选什么课么? 小H ...

  8. 探索 vuex 2.0 以及使用 vuejs 2.0 + vuex 2.0 构建记事本应用23

    前言 首先说明这并不是一个教程贴,而记事本应用是网上早有的案例,对于学习 vuex 非常有帮助.我的目的是探索 vuex 2.0 ,然后使用 vuejs 2.0 + vuex 2.0 重写这个应用,其 ...

  9. OpenCV腐蚀与膨胀(Eroding and Dilating)

    腐蚀与膨胀(Eroding and Dilating) 目标 本文档尝试解答如下问题: 如何使用OpenCV提供的两种最基本的形态学操作,腐蚀与膨胀( Erosion 与 Dilation): ero ...

  10. [转]SQL 2005 开启OpenRowset/OpenDatasource的办法

    本文转自:http://www.cnblogs.com/chenghm2003/archive/2008/09/12/1289793.html 1.开始 —> 所有程序  —> Micro ...