답변:
이것은 어떤 분야입니까? IN 연산자는 단일 필드와 함께 사용할 수 없지만 서브 쿼리 또는 사전 정의 된 목록과 함께 사용해야합니다.
-- subquery
SELECT a FROM x WHERE x.b NOT IN (SELECT b FROM y);
-- predefined list
SELECT a FROM x WHERE x.b NOT IN (1, 2, 3, 6);
문자열을 검색하는 경우 LIKE 연산자를 찾으십시오 (그러나 느립니다).
-- Finds all rows where a does not contain "text"
SELECT * FROM x WHERE x.a NOT LIKE '%text%';
검색하려는 문자열이 주어진 문자열로 시작하도록 제한하는 경우 인덱스를 사용하고 (해당 필드에 색인이있는 경우) 합리적으로 빠를 수 있습니다.
-- Finds all rows where a does not start with "text"
SELECT * FROM x WHERE x.a NOT LIKE 'text%';
NOT IN
값이 NULL이 아닌지 확인하십시오. 여기에서 사용합니다 SELECT a FROM x WHERE x.b NOT IN (SELECT b FROM y WHERE b IS NOT NULL);
: 당신은 또한 NULL 값을 제외해야하는 경우이해야 할 것,SELECT a FROM x WHERE x.b NOT IN (SELECT b FROM y WHERE b IS NOT NULL) AND x.b IS NOT NULL;
SELECT * FROM table WHERE field1 NOT LIKE '%$x%';
(SQL 주입을 피하기 위해 $ x를 올바르게 피하십시오)
편집 : NOT IN
약간 다른 일을합니다. 질문이 완전히 명확하지 않으므로 사용할 것을 선택하십시오. LIKE 'xxx%'
색인을 사용할 수 있습니다. LIKE '%xxx'
또는 LIKE '%xxx%'
할 수 없습니다.