Decode function in oracle database

First of all, let's start with the to_char. to_char(SYSDATE,'Day') will give you the day of the week it is today. to_char lets you convert a date (in this case today's date since you've specified sysdate) into a string of a certain format. Take a look here for some other examples of date formats you can use:

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

trim removes leading and trailing whitespace.

Now for the decode. You can think of decode like an if else statement. Take a look at:

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

In your particular example, you could read this statement as: if today is Monday return 3 else return 1.

decode also allows you to do things a bit more complex like this:

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

This would read: if today is Monday return 3, else if today is Tuesday return 5, else return 1


That will return 3 if it's currently Monday (and the locale is such that the day is rendered as "Monday"), and 1 otherwise.

DECODE(a, b,c, d,e, f,g, ..., h) will compare a to b, d, f, etc., in turn. If a is b, then DECODE returns c; if a is d, then DECODE returns e; and so on. If a is not any of these, then DECODE returns h. (The h is optional; the default return-value, if h is not given, is NULL.)

Tags:

Sql

Oracle