有一张表
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”,在表里没有数据的情况下,怎样能够得到?
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”,在表里没有数据的情况下,怎样能够得到?
NVL()函數是針對空值的處理,但你現在的表中沒有數據--當然也就沒有空值的數據,所以NVL()就不起作用了
null值是某一条记录的某个字段为null值。
SID为空时,值为'123'
SELECT NVL(SID,'123') SID FROM TEST_TABLE 这语句没有SID为空的列
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;