171207之Oracle中decode函式、SIGN函式和INSTR函式
一:DECODE的語法:
DECODE(value,if1,then1,if2,then2,if3,then3,…,else),表示如果value 等於if1時,DECODE函式的結果返回then1,…,如果不等於任何一個if值,則返回else。
decode (expression, search_1, result_1, search_2, result_2, ....
search_n, result_n)
decode (expression, search_1, result_1, search_2, result_2, ....
search_n, result_n, default )
decode函式比較表示式和搜尋字,如果匹配,返回結果;如果不匹配,返回default值;如果未定義default值,則返回空值。
先構造一個例子,假設我們想給智星職員加工資,其標準是:工資在8000元以下的將加20%;工資在8000元以上的加15%,通常的做法
是,先選出記錄 中的工資欄位值? select salary into var-salary from employee,然後對變數var-salary用if-then-else或choose case之類的流控制語句進行判斷。 如果用DECODE函式,那麼我們就可以把這些流控制語句省略,通過SQL語句就可以直接完成。如下:
select decode(sign(salary - 8000),1,salary*1.15,-1,salary*1.2,
salary from employee 是不是很簡潔?
有學生成績表student,現在要用decode函式實現以下幾個功能:成績>85,顯示優秀;>70顯示良好;>60及格;否則是不及格。
假設student的編號為id,成績為score,那麼:
select id, decode(sign(score-85),1,'優秀',0,'優秀',-1,
decode(sign(score-70),1,'良好',0,'良好',-1,
decode(sign(score-60 ),1,'及格',0,'及格',-1,'不及格')))
from student;
oracle函式:decode() 什麼情況下要用到?
lSQL.append(" decode(t.bkc040, '1', '已匯入',
'0', '未匯入', t.bkc040) as bkc040n, ");
lSQL.append(" decode(t.bkc252, ");
lSQL.append(" '1', ");
lSQL.append(" '驗證通過', ");
lSQL.append(" '0', ");
lSQL.append(" '未驗證', ");
lSQL.append(" '-1', ");
lSQL.append(" '驗證不通過', ");
lSQL.append(" '2', ");
lSQL.append(" '部分驗證通過', ");
lSQL.append(" t.bkc252) as bkc252n ");
lSQL.append(" from KB77 t ");
lSQL.append(" where t.bkc133='"+bkc133+"' ");
if(StringUtils.isNotEmpty(bkc252)){
lSQL.append(" and t.bkc252='"+bkc252+"' ");
}
二:Sign函式
在Oracle/PLSQL中, sign 函式返回一個數字的正負標誌.
語法如下:sign( number )
number 要測試標誌的數字.
If number < 0, then sign returns -1.
If number = 0, then sign returns 0.
If number > 0, then sign returns 1.
例如:
sign(-23) would return -1
sign(-0.001) would return -1
sign(0) would return 0
sign(0.001) would return 1
sign(23) would return 1
sig(23.601) would return 1
示例:
一、select sign( 100 ),sign(- 100 ),sign( 0 ) from dual;
SIGN(100) SIGN(-100) SIGN(0)
———————————————————–
1 -1 0
二、a=10,b=20
則sign(a-b)返回-1
三:instr函式
在Oracle中,可以使用instr函式對某個字串進行判斷,判斷其是否含有指定的字元。
其語法為: instr(sourceString,destString,start,appearPosition).
其中
1: sourceString 代表源字串;
2: destString 代表想從源字串中查詢的子串;
3: start 代表查詢的開始位置,該引數可選的,預設為1;
4: appearPosition代表想從源字元中查找出第幾次出現的destString,該引數也是可選的,預設為1;
返回值為:查詢到的字串的位置
說明:如果start的值為負數,那麼代表從右往左進行查詢。
例:
select * from dictionary where instr(comments,’index’)>0;
相關推薦
171207之Oracle中decode函式、SIGN函式和INSTR函式
一:DECODE的語法: DECODE(value,if1,then1,if2,then2,if3,then3,…,else),表示如果value 等於if1時,DECODE函式的結果返回then1,…,如果不等於任何一個if值,則返回else。 dec
OpenCV3之——影象線性混合操作、陣列加權和addWeighted()函式
線性混合操作是一種典型的二元(兩個輸入)的畫素操作; 計算陣列加權和:addWeighted()函式//函式原型 void addWeighted(InputArray src1,double alpha,InputArray src2,double
C++ | vector 類中的 push_back( ) 函式 、(新增和刪除函式)
vector是用陣列實現的,每次執行push_back操作,相當於底層的陣列實現要重新分配大小(即先free掉原來的儲存,後重新malloc) 函式名 push_back,演算法語言裡面的一個函式名,如: 1) c++中的vector標頭檔案裡面就有這個push_
Oracle中decode函式和sign函式的用法
資料庫表結構如下: 流程控制函式 DECODE decode()函式簡介: 主要作用: 將查詢結果翻譯成其他值(即以其他形式表現出來,以下舉例說明); 使用方法: Select decode(columnname,值1,翻譯值1,值2,翻譯值2,…值n,翻譯值n,預
oracle中的nvl 、nvl2、decode、case when 函式的用法
參考文件:http://www.cnblogs.com/eshizhan/archive/2012/04/06/2435493.html <span style="font-size:18
【轉載】oracle中decode函式用法
1、DECODE的語法:DECODE(value,if1,then1,if2,then2,if3,then3,...,else)。表示假設value 等於if1時,DECODE函式的結果返回then1,...,假設不等於不論什麼一個if值。則返回else 2、該函式的含義例如以下: IF 條件=值1 TH
Oracle null判斷並替換空值 ORACLE中DECODE的用法(例子) Oracle的NVL函式用法 用 ISNULL(), NVL(), IFNULL() and COALESCE() 函式替換空值
可用 NVL(), IFNULL() ,COALESCE(),DECODE() 函式 1.NVL() 從兩個表示式返回一個非 null 值。語法NVL(eExpression1, eExpression2)引數eExpression1, eExpression2 如果 eExpressio
關於Oracle中decode函式的用法
相信有過Oracle程式設計基礎的人都應該接觸過decode這一函式,沒有接觸過的也沒有關係,接下來我簡單的介紹下關於decode函式的用法,首先decode是Oracle的一個內建函式,典型的SQL語句如下: select decode(a,1,'cc',
Oracle中decode函式對case when的簡化
現假設我們有一個使用者表t_user,其中擁有一個表示性別的欄位gender,該欄位對應的值可能為0、1或者空,其中0表示“男”,1表示“女”,空表示“未填”。現需要我們在查詢t_user的gender時不是顯示對應的0和1,而是顯示對應的文字,“男”或“女”。
oracle中decode()和nvl()函式的用法
decode(待比較的物件,如果為這個,那麼結果為這個,否則結果是這個) nvl (test,1) 判斷是否為空,如果為空就取1 select * from 表名 where 1=1 and instr(a,b)
Oracle 中 decode 函式用法 與lpad結合
//decode 函式用法: decode(條件,值1,返回值1,值2,返回值2,...值n,返回值n,預設值) 該函式的含義如下: IF 條件=值1 THEN RETURN(翻譯值1) ELSIF 條件=值2 THEN RETURN(翻譯值2)
Oracle 中重新編譯無效的儲存過程, 或函式、觸發器等物件
Oracle 中的儲存過程在有些情況下會變成失效狀態,在 PL/SQL Developer 中該儲存過程的圖示左上角顯示一把小紅叉叉。比如儲過程所引用的物件失效,dblink 出問題啦都可能引起用到它的儲存過程失效。再就我的儲存過程經常會變成無效,至今原因都未查明。查詢 db
sql server中類似oracle中decode功能的函式
SQL Server 2008中的寫法: select t.PROJECTNAME, t.BUILDCONTENTSCALE, CASE t.PROJECTLEVEL WHEN '0' THEN '國家重點' WHEN '1' THEN '省重
Oracle中Decode()函式使用詳細
decode()函式是ORACLE PL/SQL是功能強大的函式之一,目前還只有ORACLE公司的SQL提供了此函式,其他資料庫廠商的SQL實現還沒有此功能。 DECODE函式是ORACLE PL/SQL是功能強大的函式之一,目前還只有ORACLE公司的SQ
oracle中scott/tiger、sys、SYSDBA、system都是什麽用
blank ora fff col system detail acl .net details oracle中scott/tiger、sys、SYSDBA、system都是什麽用 點我,點我~oracle中scott/tiger、sys、SYSDBA、sy
Oracle 中 decode 函數用法
個數 依次 elsif 根據 sql nbsp htm 開發 ret 含義解釋: decode(條件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 該函數的含義如下:IF 條件=值1 THEN RETURN(翻譯值1)ELSIF 條件=值2 THEN
Oracle 中count(1) 、count(*) 和count(列名) 函數的區別
select sdn 快的 包含 varchar2 into 要去 tails lan 1)count(1)與count(*)比較: 1、如果你的數據表沒有主鍵,那麽count(1)比count(*)快2、如果有主鍵的話,那主鍵(聯合主鍵)作為count的條件也比count
Oracle中時間日期格式轉換及常用日期函式
我的第一篇部落格,記錄學習,分享生活。 Oracle時間日期格式轉換: 主要有兩種格式,一種為日期格式date,一種為字元格式char。 查詢當前日期: select sysdate from dual; 將日期轉化為字元格式,可以對日期進行一些操作 --顯示所有僱員的姓名和加
ORACLE中建立表、對錶進行增刪改查的語法
最近在學習ORACLE,現將在ORACLE中建立表、對錶進行增刪該查的語法總結如下: 表是一種資料庫物件,是基本的資料儲存單位,由行和列組成 表的建立(以課程資訊表為例): CREATE TABLE OBJECTS
轉,Oracle中關於處理小數點位數的幾個函式,取小數位數,Oracle查詢函式
關於處理小數點位數的幾個oracle函式() 1. 取四捨五入的幾位小數 select round(1.2345, 3) from dual; 結果:1.235 2. 保留兩位小數,只舍 select trunc(1.2345, 2) from dual; 結果:1.23 select trun