MySQL SELECT LIKE 또는 REGEXP를 사용하여 하나의 레코드에서 여러 단어를 일치시킵니다.
필드table
.name
Stylus Photo 2100'이 포함되어 있으며 다음과 같은 질문이 있습니다.
SELECT `name` FROM `table` WHERE `name` LIKE '%Stylus 2100%'
아무 결과도 없어요.물론 내가 검색하면 할 것이다.
SELECT `name` FROM `table` WHERE `name` LIKE '%Photo 2100%'
Stylus 2100'을 검색하여 레코드를 선택하려면 어떻게 해야 합니까?
감사해요.
말 순서를 안다면..다음을 사용할 수 있습니다.
SELECT `name` FROM `table` WHERE `name` REGEXP 'Stylus.+2100'
다음 항목도 사용할 수 있습니다.
SELECT `name` FROM `table` WHERE `name` LIKE '%Stylus%' AND `name` LIKE '%2100%'
가장 좋은 해결책은 정규 표현을 사용하는 것이라고 생각합니다.가장 깨끗하고 아마 가장 효과적일 거예요.정규 표현은 일반적으로 사용되는 모든 DB 엔진에서 지원됩니다.
MySql에는RLIKE
operator는 다음과 같은 쿼리를 제공합니다.
SELECT * FROM buckets WHERE bucketname RLIKE 'Stylus|2100'
제가 regexp를 잘 못해서 표현이 괜찮았으면 좋겠어요.
편집
RegExp는 다음과 같습니다.
SELECT * FROM buckets WHERE bucketname RLIKE '(?=.*Stylus)(?=.*2100)'
MySql regexp 지원에 대한 자세한 내용:
http://dev.mysql.com/doc/refman/5.1/en/regexp.html#operator_regexp
각 공간을 다음과 같이 바꿀 수 있습니다.%
SELECT `name` FROM `table` WHERE `name` LIKE '%Stylus%2100%'
올바른 솔루션은 풀텍스트 검색(사용 가능한 경우) https://dev.mysql.com/doc/refman/5.1/en/fulltext-search.html입니다.
이것은 거의 당신이 원하는 것을 할 수 있습니다.
SELECT * FROM buckets WHERE bucketname RLIKE '(Stylus|2100)+.*(Stylus|2100)+';
SELECT * FROM buckets WHERE bucketname RLIKE '(Stylus|2100|photo)+.*(Stylus|2100|photo)+.*(Stylus|2100|photo)+.*';
그러나 이 또한 "210021002100"과 매치되어 좋지 않습니다.
이런 걸 해야 되는데
SELECT * FROM buckets WHERE bucketname RLIKE 'Stylus.*2100';
또는
SELECT * FROM buckets WHERE bucketname RLIKE '(Stylus)+.*(2100)+';
검색 결과가 다음과 같다고 가정합니다.stylus photo 2100
. 다음 예제를 사용해 보십시오.RLIKE
.
SELECT * FROM `buckets` WHERE `bucketname` RLIKE REPLACE('stylus photo 2100', ' ', '+.*');
편집
또 다른 방법은FULLTEXT
에 색인을 붙이다.bucketname
그리고.MATCH ... AGAINST
의 구문SELECT
진술.위의 예를 다시 쓰려면...
SELECT * FROM `buckets` WHERE MATCH(`bucketname`) AGAINST (REPLACE('stylus photo 2100', ' ', ','));
SELECT `name` FROM `table` WHERE `name` LIKE '%Stylus % 2100%'
언급URL : https://stackoverflow.com/questions/9099469/mysql-select-like-or-regexp-to-match-multiple-words-in-one-record
'programing' 카테고리의 다른 글
Django에서 매일 데이터베이스에 새 테이블을 만드는 방법 (0) | 2023.01.05 |
---|---|
PHP 배열 삭제 값(키 아님) (0) | 2022.12.31 |
지연된 jQuery는 어떻게 사용할 수 있습니까? (0) | 2022.12.31 |
autoconf를 찾을 수 없습니다.autoconf 설치 Xampp를 Cent로 확인하십시오.OS (0) | 2022.12.31 |
JavaScript 또는 디버깅에서 DOM 노드에서 이벤트 청취자를 찾는 방법은 무엇입니까? (0) | 2022.12.31 |