oracle9i查询

时间:2009-05-03 04:55:18

标签: sql oracle

我有一个由6列组成的oracle表,其中一列是日期列。 日期字段在某些行中具有空条目...没有其他字段为空。 我可以删除日期字段为空的行吗? 或者我应该更新这些行的日期字段中的某些值...?

请告诉我这两项操作的正确方法吗?

感谢....

3 个答案:

答案 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.

此致 罗布。