<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-26  評論-13  文章-46  trackbacks-0

    In Oracle/PLSQL, the decode function has the functionality of an IF-THEN-ELSE statement.

    The syntax for the decode function is:

    decode( expression , search , result [, search , result]... [, default] )

    expression is the value to compare.

    search is the value that is compared against expression.

    result is the value returned, if expression is equal to search.

    default is optional. If no matches are found, the decode will return default. If default is omitted, then the decode statement will return null (if no matches are found).


    For Example:

    You could use the decode function in an SQL statement as follows:

    SELECT supplier_name,
    decode(supplier_id, 10000, 'IBM',
    10001, 'Microsoft',
    10002, 'Hewlett Packard',
    'Gateway') result
    FROM suppliers;

    The above decode statement is equivalent to the following IF-THEN-ELSE statement:

    IF supplier_id = 10000 THEN
    ???? result := 'IBM';

    ELSIF supplier_id = 10001 THEN
    ??? result := 'Microsoft';

    ELSIF supplier_id = 10002 THEN
    ??? result := 'Hewlett Packard';

    ELSE
    ??? result := 'Gateway';

    END IF;


    The decode function will compare each supplier_id value, one by one.


    Frequently Asked Questions


    Question:? One of our viewers wanted to know how to use the decode function to compare two dates (ie: date1 and date2), where if date1 > date2, the decode function should return date2. Otherwise, the decode function should return date1.

    Answer:? To accomplish this, use the decode function as follows:

    decode((date1 - date2) - abs(date1 - date2), 0, date2, date1)

    The formula below would equal 0, if date1 is greater than date2:

    (date1 - date2) - abs(date1 - date2)


    Question:? I would like to know if it's possible to use decode for ranges of numbers, ie 1-10 = 'category 1', 11-20 = 'category 2', rather than having to individually decode each number.

    Answer: Unfortunately, you can not use the decode for ranges of numbers. However, you can try to create a formula that will evaluate to one number for a given range, and another number for the next range, and so on.

    For example:

    SELECT supplier_id,
    decode(trunc ((supplier_id - 1) / 10), 0, 'category 1',
    1, 'category 2',
    2, 'category 3',
    'unknown') result
    FROM suppliers;

    In this example, based on the formula:

    trunc ((supplier_id - 1) / 10

    The formula will evaluate to 0, if the supplier_id is between 1 and 10.
    The formula will evaluate to 1, if the supplier_id is between 11 and 20.
    The formula will evaluate to 2, if the supplier_id is between 21 and 30.

    and so on...


    Question:? I need to write a decode statement that will return the following:

    If yrs_of_service < 1 then return 0.04
    If yrs_of_service >= 1 and < 5 then return 0.04
    If yrs_of_service > 5 then return 0.06

    How can I do this?

    Answer:? You will need to create a formula that will evaluate to a single number for each one of your ranges.

    For example:

    SELECT emp_name,
    decode(trunc (( yrs_of_service + 3) / 4), 0, 0.04,
    1, 0.04,
    0.06) as perc_value
    FROM employees;

    Helpful Tip: One of our viewers suggested combining the SIGN function with the DECODE function as follows:

    The date example above could be modified as follows:

    DECODE(SIGN(date1-date2), 1, date2, date1)

    The SIGN/DECODE combination is also helpful for numeric comparisons e.g. Sales Bonuses

    DECODE(SIGN(actual-target), -1, 'NO Bonus for you', 0,'Just made it', 1, 'Congrats, you are a winner')

    posted on 2006-04-04 12:51 似水流年 閱讀(460) 評論(0)  編輯  收藏 所屬分類: Oracle
    主站蜘蛛池模板: 亚洲久悠悠色悠在线播放| 成人性生交大片免费看中文| 成人无码区免费A片视频WWW| 亚洲AV无码专区在线播放中文| 手机看黄av免费网址| 国产精品亚洲αv天堂无码| 亚洲av综合av一区二区三区| 97性无码区免费| 亚洲精品国产啊女成拍色拍 | 亚洲一区二区久久| 毛片免费在线观看| 亚洲性在线看高清h片| 丰满亚洲大尺度无码无码专线| a毛片在线免费观看| 亚洲综合色在线观看亚洲| 男男黄GAY片免费网站WWW| 成人黄页网站免费观看大全| 亚洲国产成人va在线观看网址| 一区二区三区免费视频网站| 国产一级淫片免费播放电影| 亚洲经典千人经典日产| 日本妇人成熟免费中文字幕| 亚洲成a人片7777| 蜜臀98精品国产免费观看| 久久久久久亚洲精品成人| 美女内射无套日韩免费播放| 久久久久久a亚洲欧洲AV| 免费观看91视频| 亚洲成AV人片天堂网无码| 永久免费不卡在线观看黄网站| 韩国欧洲一级毛片免费| 77777亚洲午夜久久多喷| 99在线视频免费观看视频| 亚洲综合av一区二区三区| 成年女人免费v片| 亚洲成av人片在线天堂无| 日韩精品视频免费观看| 国产精品手机在线亚洲| 大胆亚洲人体视频| a级毛片免费观看在线| 亚洲精品自产拍在线观看|