programing

MySQL: 열이 null인 행 선택

sourcejob 2022. 9. 27. 23:50
반응형

MySQL: 열이 null인 행 선택

특정 열에 대해 NULL이 있는 행을 선택하려고 하면 빈 집합이 반환되는 문제가 있습니다.그러나 phpMyAdmin 테이블을 보면 대부분의 행에서 null로 표시됩니다.

내 쿼리는 다음과 같습니다.

SELECT pid FROM planets WHERE userid = NULL

매번 빈 세트입니다.

실제 값이 아닌 "NULL" 또는 "NULL"로 저장되지 않도록 하는 곳이 많으며, 공백만 찾아보라고 하는 곳도 있습니다.userid = ' ')는, 어느쪽도 기능하지 않습니다.MyISAM은 null 저장에 문제가 있으므로 MyISAM을 사용하지 말고 innoDB를 사용하라는 제안이 있었습니다.테이블을 innoDB로 바꿨는데, 변환이 안 될 수 있기 때문에 아직 null이 아닌 것이 문제인 것 같습니다.테이블을 innoDB 등으로 재작성하지 않고 하고 싶지만, 필요하다면 꼭 시도해 볼 수 있습니다.

SQL의 특수한 절차이므로WHERE field IS NULLNULL은 어떤 것과도 같을 수 없기 때문에

포함(즉, NULL = NULL은 항상 false임).

Rule 3 https://en.wikipedia.org/wiki/Codd%27s_12_rules

SELECT pid FROM planets WHERE userid IS NULL

모두 답이 나왔기 때문에 조금 더 덧붙이고 싶습니다.나도 같은 문제에 직면했었다.

쿼리가 실패한 이유는 무엇입니까?당신은 가지고 있다,

SELECT pid FROM planets WHERE userid = NULL;

mysql doc에서 예상한 결과를 얻을 수 없습니다.

SQL에서 NULL 값은 다른 값(NULL도 마찬가지)과 비교할 때 절대 참이 아닙니다. NULL을 포함하는 식은 식과 관련된 연산자 및 함수에 대한 설명서에 달리 명시되지 않는 한 항상 NULL 값을 생성합니다.

강조해 주세요.

다음과 같은 열 값을 검색하는 방법NULL, 를 사용할 수 없습니다.expr = NULL다음 문장은 행을 반환하지 않습니다. 왜냐하면 어떤 식에도 해당되지 않기 때문입니다.

솔루션

SELECT pid FROM planets WHERE userid IS NULL; 

테스트 방법NULL, 를 사용합니다.IS NULL그리고.IS NOT NULL오퍼레이터.

여기도 있어요.<=>연산자:

SELECT pid FROM planets WHERE userid <=> NULL

먹혀들 것이다.좋은 점은<=>는 NULL 이외의 값에도 사용할 수 있습니다.

SELECT NULL <=> NULL수율1.

SELECT 42 <=> 42수율1뿐만 아니라.

여기를 참조해 주세요.https://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html#operator_equal-to

http://w3schools.com/sql/sql_null_values.asp로부터의 정보:

1) NULL 값은 알 수 없는 데이터가 누락되었음을 나타냅니다.

2) 기본적으로는 테이블 열에 NULL 값을 포함할 수 있습니다.

3) NULL 값은 다른 값과 다르게 취급된다.

4) NULL과 0은 동등하지 않으므로 비교할 수 없습니다.

5) =, <, <>와 같은 비교 연산자에서는 NULL 값을 테스트할 수 없습니다.

6) 대신 IS NULL 연산자와 IS NOT NULL 연산자를 사용해야 합니다.

문제가 있는 경우:

SELECT pid FROM planets WHERE userid IS NULL

쿼리에서도 같은 문제가 발생하였습니다.

SELECT * FROM 'column' WHERE 'column' IS NULL; 

값을 반환하지 않았습니다.MyISAM에 문제가 있는 것으로 보이며 InnoDB의 데이터에 대한 동일한 쿼리에서 예상된 결과가 반환되었습니다.

사용 내용:

SELECT * FROM 'column' WHERE 'column' = ' '; 

예상한 결과를 모두 반환했습니다.

SELECT pid FROM planets WHERE userid is null;

데이터베이스를 Access에서 MySQL로 변환할 때도 같은 문제가 있었습니다(vb.net을 사용하여 데이터베이스와 통신).

필드(필드 유형 varchar(1))가 늘인지 여부를 평가해야 했습니다.

이 문장은 시나리오에서 유효했습니다.

SELECT * FROM [table name] WHERE [field name] = ''

언급URL : https://stackoverflow.com/questions/3536670/mysql-selecting-rows-where-a-column-is-null

반응형