2013-03-29 5 views
0

임 내가이 쿼리 만든 열 'toevoeging'하나의 특정 열에 NULL이 아닌 모든 행을 삭제하는 방법은 무엇입니까?

에 값을 가진 모든 행을 삭제하려고 :

DELETE FROM gebruiksoppervlakte WHERE toevoeging = NOT NULL; 

왜 가능이되지 않습니다? 그래서 NULL이있는 행을 유지하려고합니다. 고마워요!

+6

'NULL'보다는'지지 않습니다 = NOT NULL'. –

+0

또한보십시오 [같지 않음 LittleBobbyTables

+0

NULL '는 다른 값과 비슷하게 직접 비교 될 수있는 값이 아닙니다. 자체 논리를 가지고 있습니다. 예를 들어,'NULL' 자체는 ** not **'NULL'과 같습니다. http://www.sqlservercentral.com/blogs/steve_jones/2010/10/13/common-sql-server-mistakes-_1320_-equals-null/ –

답변

4

당신은 toevoeging = NOT NULL 대신 IS NOT NULL를 사용해야합니다 :

DELETE 
FROM gebruiksoppervlakte 
WHERE toevoeging IS NOT NULL; 

NULL하는 값을 결여 무언가이다. 따라서 IS NULL 또는 IS NOT NULL을 사용하면 열에 값이 없거나 값이 부족한 것입니다.

편집하면 테이블의 값이 toevoeging 열에있는 모든 항목이 삭제됩니다. 당신은 삭제할 빈 문자열이있는 경우에, 당신은 사용하고자하는 것입니다 :

DELETE 
FROM gebruiksoppervlakte 
WHERE toevoeging = ''; 

Demo를 참조하십시오. 당신이 null 값을 가진 행을 삭제하려면

당신은 사용 :

DELETE 
FROM gebruiksoppervlakte 
WHERE toevoeging IS NULL; 

참조 Demo

편집 # 2, 당신은 모든 행 곳을 삭제하려고 채팅에서 우리의 대화를 기반으로 값이 있지만 그 값은 빈 문자열이 아닙니다. 그런 다음 나머지 행을 null 열로 업데이트해야합니다. NULL 값이 행을 찾기 위해 WHERE 절을 사용하는 경우

DELETE 
FROM gebruiksoppervlakte 
WHERE toevoeging IS NOT NULL 
    and toevoeging <> ''; 


update gebruiksoppervlakte 
set toevoeging = null; 

는 결코 "= NULL"을 사용하지 Demo

+0

이 작업을 수행하면 전체 테이블이 비어 있습니다.하지만 그렇지 않습니다. 모든 셀이 채워집니다 .. – warnerst

+0

@warnerst toevoeging이 null이 아닌 모든 행이 삭제되므로 각 행에 값이 있으면 모든 것이 삭제됩니다. 너는 무엇을 지우려고 하는가? 빈 셀, null 또는 빈 문자열입니까? – Taryn

+0

아 이들은 비어 있지만 'NULL'이 아닙니다.그래서 난 지금 작동해야한다고 생각합니다 – warnerst

0

를 참조하십시오 : 결과적으로 당신은 삭제 및 업데이 트를 모두 사용해야 비교 대신 항상 IS NULL 또는 IS NOT NULL 비교 연산자를 사용하십시오.

그래서 올바른 쿼리는 다음과 같습니다

DELETE FROM gebruiksoppervlakte WHERE toevoeging IS NOT NULL; 
0

NULL을 비교 할 수 없기 때문에, ... WHERE toevoeging IS NOT NULL 정확히 같은 다음 작품 :

DELETE FROM gebruiksoppervlakte 
WHERE toevoeging = toevoeging 
    ; 
관련 문제