임 내가이 쿼리 만든 열 'toevoeging'하나의 특정 열에 NULL이 아닌 모든 행을 삭제하는 방법은 무엇입니까?
에 값을 가진 모든 행을 삭제하려고 :
DELETE FROM gebruiksoppervlakte WHERE toevoeging = NOT NULL;
왜 가능이되지 않습니다? 그래서 NULL이있는 행을 유지하려고합니다. 고마워요!
임 내가이 쿼리 만든 열 'toevoeging'하나의 특정 열에 NULL이 아닌 모든 행을 삭제하는 방법은 무엇입니까?
에 값을 가진 모든 행을 삭제하려고 :
DELETE FROM gebruiksoppervlakte WHERE toevoeging = NOT NULL;
왜 가능이되지 않습니다? 그래서 NULL이있는 행을 유지하려고합니다. 고마워요!
당신은 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
를 참조하십시오 : 결과적으로 당신은 삭제 및 업데이 트를 모두 사용해야 비교 대신 항상 IS NULL 또는 IS NOT NULL 비교 연산자를 사용하십시오.
그래서 올바른 쿼리는 다음과 같습니다
DELETE FROM gebruiksoppervlakte WHERE toevoeging IS NOT NULL;
NULL을 비교 할 수 없기 때문에, ... WHERE toevoeging IS NOT NULL
정확히 같은 다음 작품 :
DELETE FROM gebruiksoppervlakte
WHERE toevoeging = toevoeging
;
'NULL'보다는'지지 않습니다 = NOT NULL'. –
또한보십시오 [같지 않음 LittleBobbyTables
NULL '는 다른 값과 비슷하게 직접 비교 될 수있는 값이 아닙니다. 자체 논리를 가지고 있습니다. 예를 들어,'NULL' 자체는 ** not **'NULL'과 같습니다. http://www.sqlservercentral.com/blogs/steve_jones/2010/10/13/common-sql-server-mistakes-_1320_-equals-null/ –