常用Oracle函数用法、示例积累

10 篇文章 0 订阅
6 篇文章 0 订阅

一、如何在html中设置样式使有\n的文本换行

<label style="white-space: pre-line">共计\n发送</label>

 二、Oracle不常见的几个函数的作用

1、INSTR函数

        instr( string1, string2 )    // instr(源字符串, 目标字符串)  返回值是索引的位置 从1开始

        instr( string1, string2 [, start_position [, nth_appearance ] ] )   // instr(源字符串, 目标字符串,            起始位置, 匹配序号)

        详解:在string1中查找string2,返回string2的位置,string1的第一个字符的位置是1而不是0。第二种写法可以指定起始位置以及第几次匹配到结果。

        示例:

  1. select INSTR('this is my csdn', 'is') from dual; -- 结果为3
  2. select INSTR('this is my csdn', 'k') from dual; -- 结果为0
  3. select INSTR('this is my csdn', 'is', 3, 2) from dual; -- 从索引为3的位置开始查找第2次出现'is'的位置 结果为6

        用处:

  1. 可当模糊查询使用,等同于like '%%'
  2. 查找目标字符串的位置,用于截取等其他函数

2、SIGN函数 

       sign(exp)

        详解: ()内必须为数字,可以格式是number的字段,可为单数值,也可以是表达式如10 - 11,num_column1 - num_column2 。()内值为正数返回1,负数返回-1,0返回 0

        示例:

  1.  select sign(2) from dual; -- 结果为1
  2. select sign(0) from dual; -- 结果为0
  3. select sign(-3) from dual;  -- 结果为-1
  4. select sign(10-13) from dual;  -- 结果为-1       
  5. select sign(PIBNUM - PIBQUANTITY) from Table1 where account = 'ZUCK_XC' ; -- 结果为-1

      

        用法:

  1. 比较()数值的大小,判断正负

3、DECODE函数

    decode(条件, 值1, 值操作,值2,值操作......,值n,值操作,缺省值) 

        详解:流程控制函数,可理解为switch..case...default...

        示例:

  1. select decode(PIBNUM, 89, PIBAIRLINE * 2, PIBAIRLINE) from ( from Table1 where account = 'ZUCK_XC';    -- 结果为182
  2. 结合上面的sign()使用                                                                                                        select decode(sign(PIBNUM-90), 1, PIBAIRLINE * 2, -1, PIBAIRLINE * 0.5, PIBAIRLINE)    from ( from Table1 where account = 'ZUCK_XC';      -- 结果为45.5

      

         用法:

  1.  可用于多重情况下对值进行不同操作
  2.  用于行转列操作

         select "user_name",
         sum(decode("course", '英语', "score", null)) as ENGLISH,
         sum(decode("course", '数学', "score", null)) as MATH
         from "course_score"  
         GROUP BY "user_name"
         order by "user_name"       

         ===>

4、ROW_NUMBER() OVER(PARTITION BY COL_NAME1 ORDER BY  COL_NAME2)

      详解:分组排序函数,按COL_NAME1分组,按COL_NAME2在组内排序,此函数计算的值就是每组内部排序后的顺序编号(组内连续的唯一的)

      示例:

  1. select t.*, row_number() over(partition by "user_name" order by "score") as score_order from "course_score" t

      

 5、RANK() OVER(PARTITION BY COL_NAME1 ORDER BY  COL_NAME2)

        详解:分组排序函数,按COL_NAME1分组,按COL_NAME2在组内排序,此函数计算的值就是每组内部排序后的顺序编号(跳跃排序,如果有两个第1接下来就是第3)

        示例:

  1.  select t.*, rank() over(partition by "user_name" order by "score") as score_order from "course_score" t  

       

 6、DENSE_RANK() OVER(PARTITION BY COL_NAME1 ORDER BY  COL_NAME2)

      详解:分组排序函数,按COL_NAME1分组,按COL_NAME2在组内排序,此函数计算的值就是每组内部排序后的顺序编号(连续排序,如果有两个第1接下来还是第2,与row_number()的区别在于可以有重复值)  

      示例:

  1. select t.*, dense_rank() over(partition by "user_name" order by "score") as score_order from "course_score" t 

      

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值