有这样一个sql语句select * from wbxtesting where siteid=$nSiteID and nvl(TESTATTRIBUTE,0)=1 and nvl(confid,0)=0 and length(trim(testname))>0 order by testname,LASTMODIFIEDTIME asc
不知道nvl(TESTATTRIBUTE,0)=1和nvl(confid,0)=0是什么意思?

解决方案 »

  1.   

    nvl()函数有两个参数,检查第一个参数是否是空,如果是显示第二个参数,否显示第一个参数
      

  2.   

    不知道nvl(TESTATTRIBUTE,0)=1和nvl(confid,0)=0是什么意思?
    当TESTATTRIBUTE为空时(null)取值为0,否则为TESTATTRIBUTE的值。
    这样可避免漏掉TESTATTRIBUTE为空(null)的记录。
      

  3.   

    nvl(exp1,exp2)返回exp1,exp2第一个不为空的值
      

  4.   

    标准解释
    NVL(expr1,expr2)
    如果expr1是NULL,则返回expr2,否则返回expr1.返回值与expr1类型相同,除非expr1是字符串类,在这种情况下将返回VARCHAR2类型.这个函数用于确保查询记录集中不包含NULL值.类似的还有
    NVL(expr1,expr2,expr3)
    如果expr1是NULL,则返回expr2,否则返回expr3.返回值与expr2类型相同,除非expr2是字符类型,在这种情况下返回VARCHAR2类型NULLIF(a,b)
    如果a等于b返回NULL,如果不等于返回b.
      

  5.   

    nvl(exp1,exp2)为空返回exp1,exp2第一个不为空的值
      

  6.   

    簡單點
    將null值轉換為非null值
      

  7.   

    nvl(TESTATTRIBUTE,0)=1和nvl(confid,0)=0是什么意思?
    就是判断这两个字段为空
      

  8.   

    nvl(TESTATTRIBUTE,0)=1
    0TESTATTRIBUTE不为空(null) 相当与 0TESTATTRIBUTE is not nullnvl(confid,0)=0
    confid为空(null)相当于 confid is null