oracle9i 查询

Posted

技术标签:

【中文标题】oracle9i 查询【英文标题】:oracle9i queries 【发布时间】:2009-05-03 04:55:18 【问题描述】:

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

请提供我执行这两项操作的正确方法?

谢谢....

【问题讨论】:

【参考方案1】:

如果您需要保留行中的其他值,您可以在查询中为日期提供默认值;

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

【讨论】:

【参考方案2】:

从表名中删除 其中 date_field 为空;

【讨论】:

【参考方案3】:

已经给出了正确的答案。我只是在这里添加一点解释。使用相等运算符 (=) 和 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.

问候, 抢。

【讨论】:

以上是关于oracle9i 查询的主要内容,如果未能解决你的问题,请参考以下文章

怎么安装Oracle9i

oracle9i中Rman的备份使用点滴

windows7如何安装oracle 9i?

Oracle9i的详细安装步骤(有图解)

Oracle9i的全文检索技术

Oracle9i和10g区别