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 查询的主要内容,如果未能解决你的问题,请参考以下文章