成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Oracle數據庫的decode、sign、trunc函數使用詳解

數據庫 Oracle
本文我們主要介紹了Oracle數據庫的decode、sign、trunc函數的使用,希望能夠對您有所幫助。

Oracle數據庫的函數有很多,本文我們主要介紹一下decodesigntrunc函數的使用,接下來就讓我們一起來了解一下這部分內容。

一、decode

在Oracle/PLSQL中, decode 具有和 IF-THEN-ELSE 一樣的功能。

decode 函數語法如下:

decode( expression , search , result [, search , result]... [, default] );

expression 要比較的表達式。

search 要與expression 比較的字段。.

result 如果expression 與search 一樣的話,返回該結果。.

default 此參數可選,如果沒有與expression 匹配上的search,就返回此結果,如果此參數沒有設置,當沒有與expression匹配上的search時,返回null。

search 和 result可成對出現多次,代表各種要匹配的情況。

應用于Oracle 9i, Oracle 10g, Oracle 11g。

例如:

 

  1. You could use the decode function in an SQL statement as follows:  
  2.  
  3. select supplier_name,decode(supplier_id,1000,'IBM',10001,'Microsoft','1002','Hewlett Packard','Gateway') result from suppliers; 

 

上面的sql語句相當于下面的IF-THEN-ELSE :

 

  1. IF supplier_id = 10000 THEN  
  2.  
  3. result :'IBM';  
  4.  
  5. ELSIF supplier_id = 10001 THEN  
  6.  
  7. result :'Microsoft';  
  8.  
  9. ELSIF supplier_id = 10002 THEN  
  10.  
  11. result :'Hewlett Packard';  
  12.  
  13. ELSE  
  14.  
  15. result :'Gateway';  
  16.  
  17. END IF; 

 

decode 函數會挨個匹配supplier_id 的值.

常見問題:

問題1: 現在一個閱讀者想問,怎么使用decode函數來比較兩個日期呢?(例如:date1 和 date2), 如果date1 > date2, decode 函數返回date2. 否則decode函數返回 date1.

回答: 要實現上述要求,可使用decode函數如下:

decode((date1 - date2) - abs(date1 - date2), 0, date2, date1)

如果date1大于date2,下面表達是會等于0:

(date1 - date2) - abs(date1 - date2)

幫助性提示:可用decode函數綁定SIGN 函數,像下面這樣:

上面比較日期的語句可修改如下:

DECODE(SIGN(date1-date2), 1, date2, date1)

SIGN/DECODE 聯合對于有關銷售紅利等數字方面的比較是非常有用的。

DECODE(SIGN(actual-target), -1, 'NO Bonus for you', 0,'Just made it', 1, 'Congrats, you are a winner')。

問題2: 我想知道是否可以用decode函數來確定數字范圍,例如 1-10 = 'category 1', 11-20 = 'category 2', 比一個一個比較應該會好一點吧。

回答: 不幸的告訴你,不可以用decode函數來確定數字的范圍. 可是你可以試著創建一個表達式,這個表達式可以得一個數字指定的范圍,下一個數字對應下一個指定的范圍, 以此類推。

例如:

select supplier_id,decode(trunc((supplier_id-1)/10),0,'category 1',1,'category 2',2,'category 3','unknown') result from suppliers;

這個例子基于這個公式:trunc ((supplier_id - 1) / 10

如果supplier_id在1和10之間,表達式計算值=0.

如果supplier_id在11和20之間,表達式計算值=1.

二、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.

應用于:Oracle 8i, Oracle 9i, Oracle 10g, Oracle 11g。

例如:

 

  1. sign(-23) would return -1 sign(0.001) would return -1 sign(0) would return 0 sign(0.001)   
  2.  
  3. would return 1 sign(23) would return 1 sig(23.601)  
  4.  
  5. would return 1 

 

三、trunc(number)

在Oracle/PLSQL中, trunc function returns a number truncated to a certain number of decimal places.

trunc function 語法如下:

trunc( number, [ decimal_places ] )

number 要截取的數字。

decimal_places 要保留的小數位. 這個參數必須是個整數. 如果此參數缺省,默認保留0位小數

應用于:Oracle 8i, Oracle 9i, Oracle 10g, Oracle 11g

例如For example:

trunc(125.815) would return 125 trunc(125.815, 0) would return 125 trunc(125.815, 1) would return 125.8 trunc(125.815, 2) would return 125.81 trunc(125.81, 3) would return 125.81 trunc(-125.815, 2) would return -125.81 trunc(125.815, -1) would return 120 trunc(125.815, -2) would return 100 trunc(125.81, -3) would return 0

如果decimal_places 大于number 本身的小數位數,返回原數字不會加0。

如:trunc(125.81,3) would return 125.81;

如果decimal_places 為負數,那么將指定的位數

如果supplier_id在21和30之間,表達式計算值=3.

關于Oracle數據庫的decode、sign、trunc函數的使用就介紹到這里了,希望本次的介紹能夠對您有所收獲!

【編輯推薦】

  1. 關于Oracle數據庫閃回個性的詳細介紹
  2. Oracle數據庫對DDL語句和DML語句的事務管理
  3. Oracle數據庫啟動參數文件及相關SQL語句簡介
  4. Oracle數據庫的幾種文件及表空間數據塊的知識簡介
  5. Oracle數據庫查詢登錄用戶名所屬表空間及其使用情況
責任編輯:趙鵬 來源: 火魔網
相關推薦

2010-10-25 14:28:53

oracle trun

2011-08-11 16:55:34

Oracle數據庫AWR

2010-04-30 17:58:55

Oracle trun

2011-05-19 13:25:14

Oracle數據庫

2009-05-13 10:28:30

OracleDUAL數據庫

2011-08-16 13:17:29

2010-04-02 13:59:08

Oracle數據庫

2010-04-14 15:14:11

Oracle數據庫

2011-03-29 10:47:49

ORACLE數據庫

2011-08-22 11:39:53

SQL Server數PIVOT

2011-08-19 16:20:14

Oracle數據庫查看工具LogMine

2010-10-25 17:00:40

Oracle deco

2010-11-04 11:45:10

Oracle DECO

2010-04-27 12:51:49

Oracle 函數de

2010-05-10 18:22:28

Oracle deco

2011-05-17 15:02:15

ORACLE數據庫備份

2011-08-18 15:49:21

Oracle厲行計劃

2011-04-11 13:19:41

Oracle數據庫

2011-08-23 09:23:35

DB2OLAP函數OLTP

2011-08-24 15:36:30

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久91精品久久久久久9鸭 | 国产情侣久久 | 爱爱免费视频 | 99久久久国产精品 | 久久精品伊人 | 天堂色综合 | 日韩欧美高清dvd碟片 | 天堂久久久久久久 | 国产草草视频 | a在线免费观看视频 | 久久久久久999 | 在线观看亚洲精品视频 | 免费成人高清在线视频 | 综合久久一区 | 精品1区2区| 亚洲va欧美va天堂v国产综合 | 久久这里只有精品首页 | 日韩免费福利视频 | 蜜臀av日日欢夜夜爽一区 | 久久99国产精一区二区三区 | 国产成人影院 | 国产精品1区 | 国产精品观看 | 香蕉久久a毛片 | 国产在线精品一区二区 | 国产精品免费一区二区三区四区 | 日日骚网| 国产精品久久九九 | 日韩一级欧美一级 | 日韩av手机在线观看 | 一级片毛片| 久久免费小视频 | 久久久www成人免费精品张筱雨 | 99一级毛片 | 99re6在线视频精品免费 | 欧美日韩视频一区二区 | 日韩一区中文字幕 | 日韩一区在线播放 | 成人免费视屏 | 欧美精品一区三区 | 亚洲一区二区三区免费在线观看 |