문제

나는 다음과 같은 것을 실행하고 싶습니다.

select * from table where field in ("%apple%", "%orange%")

방법이 있습니까? 또는 적어도 모든 키워드에 대해 쿼리를 동적으로 구축하는 것보다 더 좋은 방법이 있습니다.

select * from table where field like "%apple%" or field like "%orange%"

감사.

도움이 되었습니까?

해결책

나는 그것이 당신이 생각해 낸 것보다 더 나은지 확실하지 않지만 당신은 사용할 수 있습니다. MySQL의 Regex 기능:

select * from my_table where field rlike 'apple|orange';

또한 다른 사람들이 언급했듯이 MySQL의 전문 검색 기능 (그러나 MyISAM 엔진을 사용하는 경우에만).

다른 팁

당신은 아마 볼 것입니다 MySQL의 전체 텍스트 인덱싱, 그것이 당신이하려는 일이라면.

더 나은 솔루션은 a를 사용하는 것입니다 전체 텍스트 색인에 대한 부울 검색?

편집 : 나는 그것을 찾아서 와일드 카드 만 지원합니다. 단어의 :

ALTER TABLE table ADD FULLTEXT INDEX (field);

SELECT * FROM table WHERE MATCH (field)
AGAINST ('orange* apple*' IN BOOLEAN MODE);

Oracle에서는 할 수 있습니다.

select * from table where
regexp_like (column, 'apple|orange', 'i')

더 복잡한 Regexp를 사용할 수 있습니다. 'I'는 그것을 둔감하게 만듭니다. 보다 오라클 문서

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top