source

'LIKE(%this%)' 또는 '%this%' 및 'something=something'이 작동하지 않습니다.

lovecheck 2022. 10. 20. 21:58
반응형

'LIKE(%this%)' 또는 '%this%' 및 'something=something'이 작동하지 않습니다.

문자열을 검색하여 여러 패턴을 검색하려는 선택 쿼리가 있습니다.

LIKE ('%this%' or '%that%' ) and something=else

0의 결과를 반환한다.

하지만

LIKE '%this%' and something=else

결과를 반환하고

LIKE '%that%' and something=else

결과를 반환하다

모든 결과를 하나의 쿼리에 담을 수 있습니까?문자열이 둘 다 일치할 경우 어떻게 처리합니까?

괜찮으시다면 좋겠지만 SQL에서는 이 구문을 사용할 수 없습니다.

이것을 시험해 보세요.

(column1 LIKE '%this%' OR column1 LIKE '%that%') AND something = else

브래킷 사용에 유의하십시오!이 근처에 있어야 합니다.OR표현.
괄호가 없으면 다음과 같이 해석됩니다.A OR (B AND C)기대했던 결과를 얻을 수 없을 겁니다

사용하는 대신LIKE,사용하다REGEXP. 예:

SELECT * WHERE value REGEXP 'THIS|THAT'
mysql> SELECT 'pi' REGEXP 'pi|apa';                     -> 1
mysql> SELECT 'axe' REGEXP 'pi|apa';                    -> 0
mysql> SELECT 'apa' REGEXP 'pi|apa';                    -> 1
mysql> SELECT 'apa' REGEXP '^(pi|apa)$';                -> 1
mysql> SELECT 'pi' REGEXP '^(pi|apa)$';                 -> 1
mysql> SELECT 'pix' REGEXP '^(pi|apa)$';                -> 0

참조: http://dev.mysql.com/doc/refman/5.1/en/regexp.html

다음과 같은 방법을 시도해 보십시오.

WHERE (column LIKE '%this%' OR column LIKE '%that%') AND something = else

를 해방하다LIKE절은 두 개의 개별적인 진술로 구분된다.

(fieldname1 LIKE '%this%' or fieldname1 LIKE '%that%' ) and something=else

당신은 그것을 나누는 것을 싫어하는 것이 있습니까?

...FROM <blah> 
   WHERE 
     (fieldA LIKE '%THIS%' OR fieldA LIKE '%THAT%') 
     AND something = else

시도해 보셨습니까?

(column LIKE '%this%' and something=else) or (column LIKE '%that%' and something=else)

다소 오래된 질문인 것은 알지만 여전히 효율적인 솔루션을 찾고 있기 때문에 대신 FULLTEXT 인덱스를 사용해야 합니다(MySQL 5.6.4에서 사용 가능).

3천5백만 개 이상의 레코드가 있는 테이블에서 3배 이상 조회like여기서 블록은 최대 2.5초 걸렸지만 이러한 필드에 인덱스를 추가하고 내부에서 부울 모드를 사용한 후match ... against ...0.05초밖에 걸리지 않았다.

언급URL : https://stackoverflow.com/questions/6526949/like-this-or-that-and-something-else-not-working

반응형