반응형
SQL(MariaDB) NULL 값이 무시됩니다.
MariaDB의 클라이언트에서mycli
전 그러려고 합니다.SELECT
가치가 있는 물건.vend_country
둘 중 하나입니다NULL
아니면MI
그래서 저는 이렇게 간단한 질문을 했습니다.
SELECT *
FROM vendors
WHERE vend_state IN (NULL,'MI');
결과물이 나왔습니다.
+-----------+-------------+-----------------+-------------+--------------+------------+----------------+
| vend_id | vend_name | vend_address | vend_city | vend_state | vend_zip | vend_country |
|-----------+-------------+-----------------+-------------+--------------+------------+----------------|
| 1001 | Anvils R Us | 123 Main Street | Southfield | MI | 48075 | USA |
+-----------+-------------+-----------------+-------------+--------------+------------+----------------+
이상한 거죠, 왜냐면 그 줄들이 빠진 것 같기 때문이죠.NULL
동일한 표에 있는 값입니다.이 쿼리는 다음을 보여줍니다.
SELECT *
FROM vendors;
출력에는 첫 번째 쿼리와 함께 출력해야 하는 null 값을 가진 두 개의 행이 명확하게 표시됩니다.
+-----------+----------------+-----------------+-------------+--------------+------------+----------------+
| vend_id | vend_name | vend_address | vend_city | vend_state | vend_zip | vend_country |
|-----------+----------------+-----------------+-------------+--------------+------------+----------------|
| 1001 | Anvils R Us | 123 Main Street | Southfield | MI | 48075 | USA |
| 1002 | LT Supplies | 500 Park Street | Anytown | OH | 44333 | USA |
| 1003 | ACME | 555 High Street | Los Angeles | CA | 90046 | USA |
| 1004 | Furball Inc. | 1000 5th Avenue | New York | NY | 11111 | USA |
| 1005 | Jet Set | 42 Galaxy Road | London | <null> | N16 6PS | England |
| 1006 | Jouets Et Ours | 1 Rue Amusement | Paris | <null> | 45678 | France |
+-----------+----------------+-----------------+-------------+--------------+------------+----------------+
저는 또한 다른 쿼리를 시도해 보았는데, 이것은 또한 다음과 같은 행을 무시합니다.NULL
값:
mariadb root@localhost:crashcourse> SELECT *
-> FROM vendors
-> WHERE vend_state IN ('<null>','MI');
+-----------+-------------+-----------------+-------------+--------------+------------+----------------+
| vend_id | vend_name | vend_address | vend_city | vend_state | vend_zip | vend_country |
|-----------+-------------+-----------------+-------------+--------------+------------+----------------|
| 1001 | Anvils R Us | 123 Main Street | Southfield | MI | 48075 | USA |
+-----------+-------------+-----------------+-------------+--------------+------------+----------------+
mariadb root@localhost:crashcourse> SELECT *
-> FROM vendors
-> WHERE vend_state IN ('NULL','MI');
+-----------+-------------+-----------------+-------------+--------------+------------+----------------+
| vend_id | vend_name | vend_address | vend_city | vend_state | vend_zip | vend_country |
|-----------+-------------+-----------------+-------------+--------------+------------+----------------|
| 1001 | Anvils R Us | 123 Main Street | Southfield | MI | 48075 | USA |
+-----------+-------------+-----------------+-------------+--------------+------------+----------------+
반면에 이것은 완전히 잘 작동하기 때문에.IN
키워드가 작동 중이어야 합니다.
SELECT *
FROM vendors
WHERE vend_id IN (1001,1005);
+-----------+-------------+-----------------+-------------+--------------+------------+----------------+
| vend_id | vend_name | vend_address | vend_city | vend_state | vend_zip | vend_country |
|-----------+-------------+-----------------+-------------+--------------+------------+----------------|
| 1001 | Anvils R Us | 123 Main Street | Southfield | MI | 48075 | USA |
| 1005 | Jet Set | 42 Galaxy Road | London | <null> | N16 6PS | England |
+-----------+-------------+-----------------+-------------+--------------+------------+----------------+
그럼 누가 말해줄 수 있나요? 어떻게 검색할 수 있나요?NULL
값을 사용IN
키워드?
사용할 수 없습니다.NULL
와는 완전히 같은IN()
.
두 가지 옵션은 다음과 같습니다.
당신의 것을 분리합니다.NULL
필터:
SELECT *
FROM vendors
WHERE vend_state IN ('MI','etc')
OR vend_state IS NULL;
아니면 사용ISNULL()
SELECT *
FROM vendors
WHERE ISNULL(vend_state,'XX') IN ('XX','MI');
비교할 수 없습니다.NULL
이쪽입니다.명시적이고 별도의 비교를 수행해야 합니다.
SELECT *
FROM vendors
WHERE vend_state IS NULL OR vend_state = 'MI';
언급URL : https://stackoverflow.com/questions/44010663/sql-mariadb-null-value-is-ignored
반응형
'programing' 카테고리의 다른 글
Oracle datatype: Should I use VARCHAR2 or CHAR (0) | 2023.10.24 |
---|---|
일반적으로 신뢰할 수 있다고 여겨지는 SHA-256 자바스크립트 구현이 있습니까? (0) | 2023.10.24 |
__m128i 변수 인쇄 (0) | 2023.10.24 |
브라우저에서 보류 중인 요청(Ajax 및 그 변형)이 있는지 확인하는 방법 (0) | 2023.10.24 |
오픈 스로우를 호출하기 전에 XMLHttpRequestresponseType을 설정하는 이유는 무엇입니까? (0) | 2023.10.24 |