2009-05-03 2 views
0

6 개의 컬럼으로 구성된 Oracle 테이블을 가지며 그 중 하나가 날짜 컬럼입니다. 날짜 필드의 일부 행에 null 항목이 있습니다 ... 다른 필드가 null이 아닙니다. 날짜 필드가 null 인 행을 삭제할 수 있습니까? 또는 해당 행의 날짜 필드에서 일부 값을 업데이트해야합니까?oracle9i 쿼리

이 두 가지 작업을 수행하는 올바른 방법을 알려주십시오. DATE_FIELD가 null 테이블 _ 에서 삭제

답변

2

행의 다른 값을 유지해야하는 경우 쿼리의 날짜에 대한 기본값을 제공 할 수 있습니다.

SELECT NVL(dateCol, to_date('31/01/2009','dd/MM/yyyy')) FROM dataTable 

테이블의 null 값을 업데이트하려면;

UPDATE dataTable 
SET dateCol = to_date('31/01/2009','dd/MM/yyyy') 
WHERE dateCol IS NULL 

null 행을 제거하려면;

DELETE FROM dataTable 
WHERE dateCol IS NULL 
1

감사 ....;

0

정답은 이미 주어졌습니다. 여기에 약간의 설명 만 추가하고 있습니다. 항등 연산자 (=)와 NULL을 사용하여 비교하는 것은 항상 NULL을 제공하고 TRUE가 아닙니다. 그래서 "= NULL"대신 "IS NULL"을 사용해야합니다. 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. 

감사 롭 NULLS 여기서 설명 문서의 일부이다.