oracle 常用知识积累 (4)

4、rows是物理窗口,即根据order by 子句排序后,取的前N行及后N行的数据计算(与当前行的值无关,只与排序后的行号相关),如上例中rows_sum例结果,是取前1行和后2行数据的求和,分析上例rows_sum的结果:

当id=1(第一个1时)时,前一行没数,后二行分别是1和3,sum=1+1+3=5;

当id=3时,前一行id=1,后二行id都为6,则sum=1+3+6+6=16;

以此类推下去,结果如上例所示。

注:行比较分析函数lead和lag无window(窗口)子句。

 

参考

https://www.cnblogs.com/cjm123/p/8033892.html;

6. 其他函数 6.1 分支函数

         这是我给的分类,凡具有分支判断功能函数都列于此。

6.1.1 DECODE函数

DECODE函数,是ORACLE公司的SQL软件ORACLE PL/SQL所提供的特有函数计算方式。

       DECODE的语法:DECODE(value,if1,then1,if2,then2,if3,then3,...,else),表示如果value等于if1时,DECODE函数的结果返回then1,...,如果不等于任何一个if值,则返回else。

       需要注意的是,这里的if、then及else 都可以是函数或计算表达式。

6.1.2 NVL函数

NVL函数是Oracle PL/SQL中的一个函数。它的格式是NVL( string1, replace_with)。它的功能是如果string1为NULL,则NVL函数返回replace_with的值,否则返回string1的值,如果两个参数都为NULL ,则返回NULL。

注意事项:string1和replace_with必须为同一数据类型,除非显式的使用TO_CHAR函数进行类型转换。相当于Sql中的isnull方法。

6.1.3 NVL2函数

Oracle在NVL函数的功能上扩展,提供了NVL2函数。

NVL2(E1, E2, E3)的功能为:如果E1为NULL,则函数返回E3,否则返回E2。相当于.Net中的三元运算符。

6.1.4 NULLIF函数

       NULLIF (ex1,ex2),值相等返空,否则返回第一个值。

6.2 TRUNC函数

截取函数,返回按指定要求截取后的数字或日期。

6.2.1 TRUNC(for number)

  TRUNC函数返回处理后的数值,其工作机制与ROUND函数极为类似,只是该函数不对指定小数前或后的部分做相应舍入选择处理,而统统截去。

  其具体的语法格式如下

  TRUNC(number[,decimals])

  其中:

  number 待做截取处理的数值

  decimals 指明需保留小数点后面的位数。可选项,忽略它则截去所有的小数部分

  下面是该函数的使用情况:

  TRUNC(89.985,2)=89.98

  TRUNC(89.985)=89

  TRUNC(89.985,-1)=80

注意:第二个参数可以为负数,表示为小数点左边指定位数后面的部分截去,即均以0记。与取整类似,比如参数为1即取整到十分位,如果是-1,则是取整到十位,以此类推。

6.2.2 TRUNC(for dates)

  TRUNC函数为指定元素而截去的日期值。

  其具体的语法格式如下:

  TRUNC(date[,fmt])

  其中:

  date 一个日期值

  fmt 日期格式,该日期将由指定的元素格式所截去。忽略它则由最近的日期截去

  下面是该函数的使用情况:

  TRUNC(TO_DATE(24-Nov-1999 08:00 pm),dd-mon-yyyyhh:mi am)

  =24-Nov-1999 12:00:00 am

  TRUNC(TO_DATE(24-Nov-1999 08:37 pm,dd-mon-yyyyhh:mi am),hh) =24-Nov-1999 08:00:00 am

  trunc(sysdate,yyyy) --返回当年第一天。

  trunc(sysdate,mm) --返回当月第一天。

  trunc(sysdate,d) --返回当前星期的第一天。

trunc(sysdate,dd)--返回当前年月日

fmt值参考如下:

Unit

 

Valid format parameters

 

Year

 

SYYYY, YYYY, YEAR, SYEAR, YYY, YY, Y

 

ISO Year

 

IYYY, IY, I

 

Quarter

 

Q

 

Month

 

MONTH, MON, MM, RM

 

Week

 

WW

 

IW

 

IW

 

W

 

W

 

Day

 

DDD, DD, J

 

Start day of the week

 

DAY, DY, D

 

Hour

 

HH, HH12, HH24

 

Minute

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsfpyp.html