필드에 $ x가 포함되지 않은 SQL 쿼리


132

field1에 $ x가 포함되지 않은 행을 찾으려면 SQL 쿼리를 찾고 싶습니다. 어떻게해야합니까?


CONTAINS () 함수 (sql)를 사용하여 동일한 검사를 수행 할 수 있습니까?
Kate

답변:


291

이것은 어떤 분야입니까? 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%';

1
xb는 무엇입니까? 당신의 편지는 매우 혼란 스럽습니다. 테이블이나 필드를 사용하는 것이 좋습니다.
Whitecat

하위 쿼리를 사용하는 경우 3 값 논리에 익숙하지 않은 경우 NOT IN 및 NULL이 명백한 방식으로 결합되지 않으므로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;
베이컨 비트

17

SELECT * FROM table WHERE field1 NOT LIKE '%$x%'; (SQL 주입을 피하기 위해 $ x를 올바르게 피하십시오)

편집 : NOT IN약간 다른 일을합니다. 질문이 완전히 명확하지 않으므로 사용할 것을 선택하십시오. LIKE 'xxx%'색인을 사용할 수 있습니다. LIKE '%xxx'또는 LIKE '%xxx%'할 수 없습니다.


올바르게 탈출하는 것으로 간주되는 것은 무엇입니까? 정상적인 문자열을 사용하면 몇 가지를 피해야하지만 LIKE에는 몇 가지 특수 문자가 있습니다.
피터 보스
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.