MySQL: OR 없이 colIN(null, "")이 가능한 테이블에서 *를 선택합니다.
또는 를 사용하지 않고 MySQL의 빈 문자열 및 NULL 값에 대한 선택을 수행할 수 있습니까?
다음 내용:
select * from table where col IN (null, "");
작동하지 않거나 null을 무시합니다(또는 'null' 문자열과 일치할 가능성이 있습니다)
SELECT *
FROM mytable
WHERE COALESCE(col, '') = ''
그러나 주의할 점은 다음과 같습니다.OR
만약 열이 색인화된다면 쿼리는 훨씬 더 효율적이 될 것입니다.
SELECT *
FROM mytable
WHERE col = '' OR col IS NULL
이것은 사용할 것입니다.ref_or_null
인덱스에 액세스 경로가 있습니다.
값 목록과 함께 선택해야 하는 경우NULLs
, null가 아닌 모든 값을 목록에 넣고 단일 값을 추가하면 됩니다.OR IS NULL
조건:
SELECT *
FROM mytable
WHERE col IN ('val1', 'val2', 'val3') OR col IS NULL
이것은 에 대한 인덱스를 사용할 것입니다.col
뿐만 아니라.
다른 사람이 이 솔루션을 찾고 있는 경우, 저도 마찬가지입니다. 두 개 이상의 열로 검색하는 경우 괄호 안의 where/또는 statement를 그룹화해야 합니다.
이렇게 하면 다음과 같은 결과가 반환되지 않습니다.
SELECT *
FROM table
WHERE col1 IN ('val1', 'val2') OR col1 IS NULL AND col2 IN ('val3', 'val4')
"OR col1 IS NULL"은 "AND col2 IN" 문을 완전히 덮어씁니다.
col1에 대한 모든 조건을 괄호 안에 넣으면 다음과 같이 작동합니다.
SELECT *
FROM table
WHERE (col1 IN ('val1', 'val2') OR col1 IS NULL) AND col2 IN ('val3', 'val4')
(적어도 제 경험에서는) 일반적으로 WHERE 문장을 괄호 안에 넣지 않기 때문에 이 작업을 시도하는 데 시간이 걸렸습니다.
그것은 나에게 아주 좋은 일입니다.
SELECT *
FROM table
WHERE IFNULL(col1, '-') IN('val1', 'val2', '-') AND col2 IN ('val3', 'val4')
언급URL : https://stackoverflow.com/questions/2147824/mysql-select-from-table-where-col-in-null-possible-without-or
'programing' 카테고리의 다른 글
*(긴*)0=0; 이 문장의 기능은 무엇입니까? (0) | 2023.10.31 |
---|---|
신뢰할 수 없는(자체 서명된) HTTPS에 대한 AJAX 호출이 자동으로 실패함 (0) | 2023.10.31 |
멀티 테넌트 장고 애플리케이션: 요청당 데이터베이스 연결 변경? (0) | 2023.10.31 |
MariaDB: varchar == text? (0) | 2023.10.31 |
Safari/Chrome 텍스트 입력/텍스트 영역 야광 제거 (0) | 2023.10.31 |