oracel中decode的使用

 

  decode比较表达式和每个搜索的值。如果表达式等于搜索的值,那么Oracle数据库返回相应的结果。如果没有找到匹配,则Oracle返回默认值。如果省略了默认,则Oracle返回null。


  decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 该函数的含义如下:


  IF 条件=值1 THEN
    RETURN(翻译值1)
  ELSIF 条件=值2 THEN
    RETURN(翻译值2)
    ......
  ELSIF 条件=值n THEN
    RETURN(翻译值n)
  ELSE
    RETURN(缺省值)
  END IF

      参数可以是任意数值类型(NUMBER , BINARY_FLOAT或BINARY_DOUBLE )或字符类型。

  如果expr和搜索是字符数据,那么Oracle使用nonpadded比较语义它们进行比较。 表达式,搜索和结果可以是任何数据类型CHAR, VARCHAR2 , NCHAR , NVARCHAR2或的。返回的字符串是VARCHAR2数据类型,并且是在相同的字符集作为第一结果参   数。

     如果第一个搜索结果对是数字,那么oracle将比较所有搜索结果的表达式和第一个expr来确定具有最高优先级数字,并将其余的参数转换为数据类型,并返回该数据类型。

Examples:

SELECT product_id,
       DECODE (warehouse_id, 1, 'Southlake', 
                             2, 'San Francisco', 
                             3, 'New Jersey', 
                             4, 'Seattle',
                                'Non domestic') 
       "Location of inventory" FROM inventories
       WHERE product_id < 1775;

 

posted @ 2016-05-13 16:59  birkhoff001  阅读(184)  评论(0编辑  收藏  举报