ORACLE的sign函式 和 DECODE函式

2021-08-31 17:00:59 字數 1316 閱讀 9964

[b]1:比較大小函式 sign [/b]

sign()函式根據某個值是0、正數還是負數,分別返回0、1、-1 ,例如:

[quote]a=10,b=20

則sign(a-b)返回-1[/quote]

[b]2:流程控制函式 decode[/b]

decode函式是oracle pl/sql是功能強大的函式之一,目前還只有oracle公司的sql提供了此函式,其他資料庫廠商還沒有實現此功能。假設想給職員加工資,其標準是:工資在8000元以下的將加20%;工資在8000元以上的加15%,8000 元的不加。實現:

select decode(sign(salary - 8000),1,salary*1.15,-1,salary*1.2,salary from employee

含**釋:

[quote]decode(條件,值1,翻譯值1,值2,翻譯值2,...值n,翻譯值n,預設值)[/quote]

[b]應用 行轉列[/b]

表結構:test_tb_grade:

create table test_tb_grade  

( id number(10) not null,

user_name varchar2(20 char),

course varchar2(20 char),

score float

)

初始資料如下圖:

[img]

如果需要實現如下的查詢效果圖:

[img]

這就是最常見的行轉列,主要原理是利用decode函式、聚集函式(sum),結合group by分組實現的,具體的sql如下:

select t.user_name,  

sum(decode(t.course, '語文', score,null)) as chinese,

sum(decode(t.course, '數學', score,null)) as math,

sum(decode(t.course, '英語', score,null)) as english

from test_tb_grade t

group by t.user_name

order by t.user_name

[b]nvl[/b]

nvl(a,b) 如果a不為null 則返回a,如果a為null則返回b;

[b]nvl2[/b]

nvl2(a,b,c) ,如果a不為null 則返回b,如果a為null則返回c;

ORACLE的sign函式和DECODE函式

一.比較大小函式 sign 函式語法 sign n 函式說明 取數字n的符號,大於0返回1,小於0返回 1,等於0返回0 示例 1 select sign 100 sign 100 sign 0 from dual sign 100 sign 100 sign 0 1 1 0 2 a 10,b 20...

Oracle 中 sign和decode 函式用法

1 sign函式語法 sign n sign函式說明 取數字n的符號,大於0返回1,小於0返回 1,等於0返回0 n可以是表示式,n 200 例子 比較大小 a 10 b 50 sign a b 1 sign b a 1 sign a 10 02 decode的用法 含 釋 decode 條件,值1...

Oracle中sign函式和decode函式的使用

oracle中sign函式和decode函式的使用 1.比較大小函式sign sign x 或者sign x 叫做符號函式,其功能是取某個數的符號 正或負 當x 0,sign x 1 當x 0,sign x 0 當x 0,sign x 1 x可以是函式或計算表示式 2.流程控制函式decode 在邏...