SQL 语句的DECODE 和 NVL()函数 SELECT DECODE(WP01.ONDO_KBN,0,'??象外'1,'常温',2,'保冷') AS ONDO_KBN FROM WP01_S_HAITOTAL WP01 //分析: 当 WP01.ONDO_KBN=0 时 ,将 "??象外 "赋值 当 WP01.ONDO_KBN=1 时 ,将 "常温"赋值 当 WP01.ONDO_KBN=2 时 ,将 "保冷"赋值 NVL()函数: NVL(ARG,VALUE)达标如果前面的ARG 值为NULL 那么返回的值为后面的VALUE 二者结合使用 : DECODE(NVL(M01.NINUSI_NM,''),'','-',M01.NINUSI_NM) //分析: 首先判断--若 M01.NINUSI_NM 是否为空.若为空赋给空值[NVL 函数] 其次,判断取出的字段是否为空,如果是则赋给'-' 最后的默认处理是M01.NINUSI.NM。 DECODE 函数 DECODE 是 Oracle 公司独家提供的功能,它是一个功能很强的函数。它虽然不是SQL 的 标准,但对于性能非常有用。到目前,其他的数据库供应商还不能提供类似DECODE 的功能,甚至有的数据库的供应商批评Oracle的 SQL不标准。实际 上,这种批评有些片面或不够水平。就象有些马车制造商抱怨亨利。福特的‚马车‛不标准一样。 1 DECODE 中的if-then-else 逻辑 在逻辑编程中,经常用到If – Then –Else 进行逻辑判断。在 DECODE 的语法中,实际上就是这样的逻辑处理过程。它的语法如下: DECODE(value, if1, then1, if2,then2, if3,then3, . . . else ) Value 代表某个表的任何类型的任意列或一个通过计算所得的任何结果。当每个value值被测试,如果value 的值为if1, Decode 函数的结果是then1;如果value 等于if2,Decode函数结果是then2;等等。事实上,可以给出多个 if/then 配对。如果value 结果不等于给出的任何配对时,Decode 结果就返回else 。 需要注意的是,这里的if、 then 及 else 都可以是函数或计算表达式。 含义解释: 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 2 DECODE 的简单例子 Oracle 系统中就有许多数据字典是使用decode 思想设计的,比如记录会话信息的V$SESSION 数据字典视图就是这样。我们从《 Oracle8i/9i Reference》资料中了解到,当用户登录成功后在V$SESSI...