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오퍼레이터.
- 연산자 IS NULL은 값이 다음과 같은지 여부를 테스트합니다.
NULL. - 연산자가 NULL이 아님을 테스트합니다.
NULL. - MySQL 비교 연산자
여기도 있어요.<=>연산자:
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
'programing' 카테고리의 다른 글
| Vuex 상태에서 반응형 어레이를 동적으로 생성 (0) | 2022.09.27 |
|---|---|
| TypeError: router.use()에 미들웨어 기능이 필요하지만 오브젝트를 취득했습니다. (0) | 2022.09.27 |
| 각진 상태단일 페이지 애플리케이션(SPA) 전용 JS? (0) | 2022.09.27 |
| 열의 모든 값을 소문자로 업데이트 (0) | 2022.09.27 |
| MySQL에서 문자열로 동작하기 위한 breakdrop()에 상당합니다. (0) | 2022.09.27 |