[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 在邏...