Oracle函数集锦

版权声明:未经允许,不能转载 https://blog.csdn.net/qq_37535558/article/details/82055516

一、case when then 用法

case具有两种格式。简单case函数和case搜索函数。

--简单case函数
case sex
  when '1' then '男'
  when '2' then '女’
  else '其他' end
--case搜索函数
case when sex = '1' then '男'
     when sex = '2' then '女'
     else '其他' end 

这两种方式,可以实现相同的功能。简单case函数的写法相对比较简洁,但是和case搜索函数相比,功能方面会有些限制,比如写判定式。

还有一个需要注重的问题,case函数只返回第一个符合条件的值,剩下的case部分将会被自动忽略。

--比如说,下面这段sql,你永远无法得到“第二类”这个结果
case when col_1 in ('a','b') then '第一类'
     when col_1 in ('a') then '第二类'
     else '其他' end  

二、oracle中trunc函数的简单使用

oracle中的trunc()函数是对时间类型或者数字进行截取操作的。
一般用法为trunc(Date,“fmt”),其中fmt 是我们要展示的时间字段,或者trunc(number),该函数表示取整。

trunc(Date)的用法一般有以下几种:

trunc(sysdate,'yyyy');//返回当前年的第一天
trunc(sysdate, 'mm');//返回当前月的第一天
trunc(sysdate, 'dd');//返回当前时间的年月日
trunc(sysdate, 'd');//返回当前星期的第一天
trunc(sysdate, 'hh');//返回当前小时

trunc(number)的用法一般有以下几种:

trunc(55.5,-1) = 50;//-1(负数)表示从小数点左边第一位截取后面全置为零;
trunc(55.55,1) = 55.5;//1(正数)表示小数点后面保留一位;
trunc(55.55) = 55;//截取整数部分;

三、Oracle中instr函数的应用以及详解
 

格式一:instr( string1, string2 )    /   instr(源字符串, 目标字符串)

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

解析:string2 的值要在string1中查找,是从start_position给出的数值(即:位置)开始在string1检索,检索第nth_appearance(几)次出现string2。

  注:在Oracle/PLSQL中,instr函数返回要截取的字符串在源字符串中的位置。只检索一次,也就是说从字符的开始到字符的结尾就结束。

2)实例

格式一

1 select instr('helloworld','l') from dual; --返回结果:3    默认第一次出现“l”的位置
2 select instr('helloworld','lo') from dual; --返回结果:4    即:在“lo”中,“l”开始出现的位置
3 select instr('helloworld','wo') from dual; --返回结果:6    即“w”开始出现的位置

格式二

1.select instr('helloworld','l',2,2) from dual;  --返回结果:4    也就是说:在"helloworld"的第2(e)号位置开始,查找第二次出现的“l”的位置
2 select instr('helloworld','l',3,2) from dual;  --返回结果:4    也就是说:在"helloworld"的第3(l)号位置开始,查找第二次出现的“l”的位置
3 select instr('helloworld','l',4,2) from dual;  --返回结果:9    也就是说:在"helloworld"的第4(l)号位置开始,查找第二次出现的“l”的位置
4 select instr('helloworld','l',-1,1) from dual;  --返回结果:9    也就是说:在"helloworld"的倒数第1(d)号位置开始,往回查找第一次出现的“l”的位置
5 select instr('helloworld','l',-2,2) from dual;  --返回结果:4    也就是说:在"helloworld"的倒数第1(d)号位置开始,往回查找第二次出现的“l”的位置
6 select instr('helloworld','l',2,3) from dual;  --返回结果:9    也就是说:在"helloworld"的第2(e)号位置开始,查找第三次出现的“l”的位置
7 select instr('helloworld','l',-2,3) from dual; --返回结果:3    也就是说:在"helloworld"的倒数第2(l)号位置开始,往回查找第三次出现的“l”的位置

四、Oracle中保留两位小数函数应用

(1)在写SQL的时候,直接保留两位小数 
(2)在java代码里面将查询出来的数进行格式化处理,保留两位小数 
先说第一种方案:在SQL中的处理 
我使用的oracle数据库,所以有3个函数可以选择,分别是: 
(1)ROUND(A/B,2) 
ROUND()函数是会将计算结果进行四舍五入的,如果所需要的值需要进行四舍五入,就可以选择这个函数,可以有一个参数,也可以有两个参数;如果有两个param,第一个是你的计算表达式,第二个是需要保留的小数位数。例子如下: 
这里写图片描述 
(2)TRUNC(A/B,2) 
TRUNC()函数是不会将计算结果进行四舍五入的,如果所需要的值不需要进行四舍五入,就可以选择这个函数,可以有一个参数,也可以有两个参数;如果有两个param,第一个是你的计算表达式,第二个是需要保留的小数位数。例子如下: 
这里写图片描述 
(3)TO_CHAR(A/B,’FM99990.99’) 
TO_CHAR()是一个格式化函数,第一个参数是计算表达式,第二个参数是指定格式化的格式,如果保留两位小数则小数点后写两个99,这里的数字9代表的数字,也是一个占位符,表示该位置上以后会是一个数字,为什么小数点前面会是一个0,而不是9,是因为如果计算结果小于1,那么只会显示小数点和小数点之后的部分,前面的0会忽略掉 
这里写图片描述 
这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_37535558/article/details/82055516