oracle数据库中的解码函数

use*_*125 11 sql oracle

任何人都可以从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)将比较ab,d,f,等,反过来.如果ab,则DECODE返回c; 如果ad,则DECODE返回e; 等等.如果a不是这些中的任何一个,则DECODE返回h.(h可选;默认返回值,如果h未给出,则为NULL.)