我有一个由6列组成的oracle表,其中一列是日期列。 日期字段在某些行中具有空条目...没有其他字段为空。 我可以删除日期字段为空的行吗? 或者我应该更新这些行的日期字段中的某些值...?
请告诉我这两项操作的正确方法吗?
感谢....
答案 0 :(得分:2)
如果您需要保留行中的其他值,则可以在查询中为日期提供默认值;
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
答案 1 :(得分:1)
从table_name中删除 其中date_field为null;
答案 2 :(得分:0)
已经给出了正确的答案。我只是在这里添加一些解释。使用等于运算符(=)和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.
此致 罗布。