任何人都可以从Oracle DB中解释以下SQL语句:
select decode(TRIM(to_char(SYSDATE,'Day')),'Monday','3','1') from dual
Run Code Online (Sandbox Code Playgroud)
nol*_*232 28
首先,让我们从开始吧to_char.to_char(SYSDATE,'Day')会给你今天的那一天.to_char允许您将日期(在本例中为今天指定的日期sysdate)转换为特定格式的字符串.在这里查看一些您可以使用的日期格式的其他示例:
http://www.techonthenet.com/oracle/functions/to_char.php
trim 删除前导和尾随空格.
现在为了decode.您可以将其视为decodeif else语句.看一眼:
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
Run Code Online (Sandbox Code Playgroud)
这将是:如果今天是星期一返回3,否则如果今天是星期二返回5,否则返回1
rua*_*akh 15
这将返回3如果它是目前周一(和场景是这样的:一天被渲染为"星期一"),以及1其他.
DECODE(a, b,c, d,e, f,g, ..., h)将比较a到b,d,f,等,反过来.如果a是b,则DECODE返回c; 如果a是d,则DECODE返回e; 等等.如果a不是这些中的任何一个,则DECODE返回h.(h可选;默认返回值,如果h未给出,则为NULL.)