2012-02-19 68 views
4

誰能請從Oracle數據庫解釋下面的SQL語句:解碼功能

select decode(TRIM(to_char(SYSDATE,'Day')),'Monday','3','1') from dual 

回答

18

首先,讓我們從to_char開始。 to_char(SYSDATE,'Day')會給你今天這一週的一天。 to_char可讓您將某個日期(在本例中爲指定sysdate後的今天日期)轉換爲特定格式的字符串。看看這裏你可以使用的日期格式的其他一些例子:

http://www.techonthenet.com/oracle/functions/to_char.php

trim除去開頭和結尾的空白。

現在爲decode。你可以像012 else語句那樣想到decode。看一看:

http://www.techonthenet.com/oracle/functions/decode.php

在你的具體的例子,你可以閱讀本聲明的:如果今天是星期一返回3否則返回1.

decode也可以讓你做的事情有點多複雜的是這樣的:

select decode(TRIM(to_char(SYSDATE,'Day')),'Monday','3','Tuesday',5,'1') 
from dual 

這將是:如果今天是星期一返回3,否則,如果今天是星期二返回5,否則返回1

11

,將返回3,如果它是目前週一(和場景是這樣的:一天被渲染爲「星期一」 ),否則爲1

DECODE(a, b,c, d,e, f,g, ..., h)將依次比較abd,f等。如果ab,則DECODE返回c;如果ad,則DECODE返回e;等等。如果a不是這些中的任何一個,則DECODE返回h。 (h是可選的;如果未給出h,則默認返回值爲NULL。)