偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Oracle數(shù)據(jù)庫(kù)的decode、sign、trunc函數(shù)使用詳解

數(shù)據(jù)庫(kù) Oracle
本文我們主要介紹了Oracle數(shù)據(jù)庫(kù)的decode、sign、trunc函數(shù)的使用,希望能夠?qū)δ兴鶐椭?/div>

Oracle數(shù)據(jù)庫(kù)的函數(shù)有很多,本文我們主要介紹一下decodesign、trunc函數(shù)的使用,接下來(lái)就讓我們一起來(lái)了解一下這部分內(nèi)容。

一、decode

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

decode 函數(shù)語(yǔ)法如下:

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

expression 要比較的表達(dá)式。

search 要與expression 比較的字段。.

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

default 此參數(shù)可選,如果沒(méi)有與expression 匹配上的search,就返回此結(jié)果,如果此參數(shù)沒(méi)有設(shè)置,當(dāng)沒(méi)有與expression匹配上的search時(shí),返回null。

search 和 result可成對(duì)出現(xiàn)多次,代表各種要匹配的情況。

應(yīng)用于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語(yǔ)句相當(dāng)于下面的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 函數(shù)會(huì)挨個(gè)匹配supplier_id 的值.

常見(jiàn)問(wèn)題:

問(wèn)題1: 現(xiàn)在一個(gè)閱讀者想問(wèn),怎么使用decode函數(shù)來(lái)比較兩個(gè)日期呢?(例如:date1 和 date2), 如果date1 > date2, decode 函數(shù)返回date2. 否則decode函數(shù)返回 date1.

回答: 要實(shí)現(xiàn)上述要求,可使用decode函數(shù)如下:

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

如果date1大于date2,下面表達(dá)是會(huì)等于0:

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

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

上面比較日期的語(yǔ)句可修改如下:

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

SIGN/DECODE 聯(lián)合對(duì)于有關(guān)銷售紅利等數(shù)字方面的比較是非常有用的。

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

問(wèn)題2: 我想知道是否可以用decode函數(shù)來(lái)確定數(shù)字范圍,例如 1-10 = 'category 1', 11-20 = 'category 2', 比一個(gè)一個(gè)比較應(yīng)該會(huì)好一點(diǎn)吧。

回答: 不幸的告訴你,不可以用decode函數(shù)來(lái)確定數(shù)字的范圍. 可是你可以試著創(chuàng)建一個(gè)表達(dá)式,這個(gè)表達(dá)式可以得一個(gè)數(shù)字指定的范圍,下一個(gè)數(shù)字對(duì)應(yīng)下一個(gè)指定的范圍, 以此類推。

例如:

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

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

如果supplier_id在1和10之間,表達(dá)式計(jì)算值=0.

如果supplier_id在11和20之間,表達(dá)式計(jì)算值=1.

二、sign

在Oracle/PLSQL中, sign 函數(shù)返回一個(gè)數(shù)字的正負(fù)標(biāo)志.

語(yǔ)法如下:sign( number )

number 要測(cè)試標(biāo)志的數(shù)字.

If number < 0, then sign returns -1.

If number = 0, then sign returns 0.

If number > 0, then sign returns 1.

應(yīng)用于: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 語(yǔ)法如下:

trunc( number, [ decimal_places ] )

number 要截取的數(shù)字。

decimal_places 要保留的小數(shù)位. 這個(gè)參數(shù)必須是個(gè)整數(shù). 如果此參數(shù)缺省,默認(rèn)保留0位小數(shù)

應(yīng)用于: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 本身的小數(shù)位數(shù),返回原數(shù)字不會(huì)加0。

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

如果decimal_places 為負(fù)數(shù),那么將指定的位數(shù)

如果supplier_id在21和30之間,表達(dá)式計(jì)算值=3.

關(guān)于Oracle數(shù)據(jù)庫(kù)的decode、sign、trunc函數(shù)的使用就介紹到這里了,希望本次的介紹能夠?qū)δ兴斋@!

【編輯推薦】

  1. 關(guān)于Oracle數(shù)據(jù)庫(kù)閃回個(gè)性的詳細(xì)介紹
  2. Oracle數(shù)據(jù)庫(kù)對(duì)DDL語(yǔ)句和DML語(yǔ)句的事務(wù)管理
  3. Oracle數(shù)據(jù)庫(kù)啟動(dòng)參數(shù)文件及相關(guān)SQL語(yǔ)句簡(jiǎn)介
  4. Oracle數(shù)據(jù)庫(kù)的幾種文件及表空間數(shù)據(jù)塊的知識(shí)簡(jiǎn)介
  5. Oracle數(shù)據(jù)庫(kù)查詢登錄用戶名所屬表空間及其使用情況
責(zé)任編輯:趙鵬 來(lái)源: 火魔網(wǎng)
相關(guān)推薦

2010-10-25 14:28:53

oracle trun

2011-08-11 16:55:34

Oracle數(shù)據(jù)庫(kù)AWR

2010-04-30 17:58:55

Oracle trun

2011-05-19 13:25:14

Oracle數(shù)據(jù)庫(kù)

2009-05-13 10:28:30

OracleDUAL數(shù)據(jù)庫(kù)

2011-08-16 13:17:29

2010-04-02 13:59:08

Oracle數(shù)據(jù)庫(kù)

2010-04-14 15:14:11

Oracle數(shù)據(jù)庫(kù)

2011-03-29 10:47:49

ORACLE數(shù)據(jù)庫(kù)

2011-08-22 11:39:53

SQL Server數(shù)PIVOT

2011-08-19 16:20:14

Oracle數(shù)據(jù)庫(kù)查看工具LogMine

2010-10-25 17:00:40

Oracle deco

2010-04-27 12:51:49

Oracle 函數(shù)de

2010-11-04 11:45:10

Oracle DECO

2010-05-10 18:22:28

Oracle deco

2011-05-17 15:02:15

ORACLE數(shù)據(jù)庫(kù)備份

2011-08-18 15:49:21

Oracle厲行計(jì)劃

2011-04-11 13:19:41

Oracle數(shù)據(jù)庫(kù)

2011-08-24 15:36:30

2011-08-23 09:23:35

DB2OLAP函數(shù)OLTP
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)