一、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,第一個是你的計算表達式,第二個是需要保留的小數位數。例子如下:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICdzFWRoRXdvN1LclHdpZXYyd2LcBzNvwVZ2x2bzNXak9CX90TQNNkRrFlQKBTSvwFbslmZvwFMwQzLcVmepNHdu9mZvwFVywUNMZTY18CX052bm9CX90TUOlXTE5kerpWT4FEVkZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39TO3kTN1UTM4AjMwYDM3EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
(2)TRUNC(A/B,2)
TRUNC()函數是不會将計算結果進行四舍五入的,如果所需要的值不需要進行四舍五入,就可以選擇這個函數,可以有一個參數,也可以有兩個參數;如果有兩個param,第一個是你的計算表達式,第二個是需要保留的小數位數。例子如下:
(3)TO_CHAR(A/B,’FM99990.99’)
TO_CHAR()是一個格式化函數,第一個參數是計算表達式,第二個參數是指定格式化的格式,如果保留兩位小數則小數點後寫兩個99,這裡的數字9代表的數字,也是一個占位符,表示該位置上以後會是一個數字,為什麼小數點前面會是一個0,而不是9,是因為如果計算結果小于1,那麼隻會顯示小數點和小數點之後的部分,前面的0會忽略掉