我有一个包含6列的oracle表,其中一列是date列。日期字段在某些rows...no中有null条目,其他字段为null。日期字段为空的行是否可以删除?或者我是否应该在日期字段中为这些行更新一些值...?
请告诉我做这两个操作的正确方法?
谢谢……
发布于 2009-05-03 09:05:46
如果需要保留行中的其他值,可以为查询中的日期提供默认值;
SELECT NVL(dateCol, to_date('31/01/2009','dd/MM/yyyy')) FROM dataTable要更新表中的空值,请使用;
UPDATE dataTable
SET dateCol = to_date('31/01/2009','dd/MM/yyyy')
WHERE dateCol IS NULL删除空行;
DELETE FROM dataTable
WHERE dateCol IS NULL发布于 2009-05-03 05:05:56
从date_field为空的table_name中删除;
发布于 2009-05-03 09:42:40
已经给出了正确的答案。我只是在这里补充一点解释。使用相等运算符(=)和NULL进行比较总是得到NULL,而不是TRUE。这就是为什么你必须使用"IS NULL“而不是"= NULL”。下面是文档中讨论NULLS的部分:http://download.oracle.com/docs/cd/B28359_01/server.111/b28286/sql_elements005.htm#i59110
举个例子:
SQL> create table mytable (col1,col2,col3,col4,col5,datecol)
2 as
3 select 1,1,1,1,1,sysdate from dual union all
4 select 2,2,2,2,2,null from dual union all
5 select 3,3,3,3,3,null from dual
6 /
Tabel is aangemaakt.
SQL> delete mytable
2 where datecol = null
3 /
0 rijen zijn verwijderd.
SQL> select * from mytable
2 /
COL1 COL2 COL3 COL4 COL5 DATECOL
----- ----- ----- ----- ----- -------------------
1 1 1 1 1 03-05-2009 11:36:08
2 2 2 2 2
3 3 3 3 3
3 rijen zijn geselecteerd.
SQL> delete mytable
2 where datecol is null
3 /
2 rijen zijn verwijderd.
SQL> select * from mytable
2 /
COL1 COL2 COL3 COL4 COL5 DATECOL
----- ----- ----- ----- ----- -------------------
1 1 1 1 1 03-05-2009 11:36:08
1 rij is geselecteerd.问候你,罗伯。
https://stackoverflow.com/questions/816365
复制相似问题