Standard SQL alternative to Oracle DECODE

后端 未结 4 2046
一个人的身影
一个人的身影 2021-01-02 10:58

Is there an ANSI SQL equivalent to Oracle\'s DECODE function?

Oracle\'s decode function is the IF-THEN-ELSE construct in SQL.

相关标签:
4条回答
  • 2021-01-02 11:13

    Please note that Oracle DECODE treats null as equal to null, while CASE(and any other comparisons) don't.

    Example: Decode(a,b,1,0) will return 1 if both a and b are nulls.

    Just run these 2 statements to see the difference.

    select case null when null then 'Y' else 'N' end dd from dual;
    select decode(null, null, 'Y', 'N') dd from dual;
    
    0 讨论(0)
  • 2021-01-02 11:20

    A CASE expression is the ANSI SQL method, of which there are 2 varieties, "simple" and "searched":

    1) Simple CASE expression:

    CASE col WHEN 1 THEN 'One'
             WHEN 2 THEN 'Two'
             ELSE 'More'
             END
    

    2) Searched CASE expression:

    CASE WHEN col < 0 THEN 'Negative'
         WHEN col = 0 THEN 'Zero'
         ELSE 'Positive'
         END
    
    0 讨论(0)
  • 2021-01-02 11:30

    adding it up null can be compared in decode whereas in case it is not.

    0 讨论(0)
  • 2021-01-02 11:37
    CASE WHEN a=1 THEN value1
         WHEN a=2 THEN value2
         ELSE default
    END
    

    SQL Case Statement Syntax?

    0 讨论(0)
提交回复
热议问题