有一张表
CREATE TABLE TEST_TABLE
(SID VARCHAR2(10))此表没有数据当我执行   SELECT * fROM TEST_TABLE   SQL时候显示No Records我想执行  SELECT NVL(SID,'123') SID FROM TEST_TABLE    这个SQL的时候,还是显示No Records为什么,我想得到“123”,在表里没有数据的情况下,怎样能够得到?

解决方案 »

  1.   

    SELECT '123' FROM DUAL;區別空值和沒有的不同
    NVL()函數是針對空值的處理,但你現在的表中沒有數據--當然也就沒有空值的數據,所以NVL()就不起作用了
      

  2.   

    没有记录就是没有记录。
    null值是某一条记录的某个字段为null值。
      

  3.   

    NVL(SID,'123')
    SID为空时,值为'123'
    SELECT   NVL(SID,'123')   SID   FROM   TEST_TABLE  这语句没有SID为空的列
      

  4.   


    1)看来你似乎只是在理解NVL(arg1,arg2)函数的使用~~不过尽管他的意义是当arg1为空时 取arg2的值 
    但是这里要有个判断的过程,他是在有记录的情况下 针对某个字段所设置的
    如果按照你的理解(表还无数据时) ,那它岂不还充当了INSERT的功能呢~~2)不过DUAL确很经典的~~EG:
    SQL> select nvl('shen','yang') as test from dual;TEST
    ----
    shenSQL> select nvl('','shen') as test from dual;TEST
    ----
    shenSQL> select * from dual;D
    -
    X--DUAL结构create table SYS.DUAL
    (
      DUMMY VARCHAR2(1)
    )
    tablespace SYSTEM
      pctfree 10
      pctused 40
      initrans 1
      maxtrans 255
      storage
      (
        initial 16K
        minextents 1
        maxextents unlimited
      );
    -- Grant/Revoke object privileges 
    grant select on SYS.DUAL to PUBLIC with grant option;