MySQL クエリで正規表現の単語境界を使用するにはどうすればよいですか?
たとえば、「製品」または「ニュースレター」のいずれかに一致させたいのですが、
それはうまく動作しますOR
、
IF(? = 'product' OR ? = 'newsletter', ... , ...)
しかし、正規表現はどうですか?下のような感じでしょうか。
IF(? REGEXP '^('product'||'newsletter')+$', ..., ... )
SELECT *
FROM tbl
WHERE description REGEXP '[[:<:]]red[[:>:]]|[[:<:]]blue[[:>:]]'
または、select 式として:
SELECT IF(description REGEXP '[[:<:]]red[[:>:]]|[[:<:]]blue[[:>:]]', 1, 0) AS is_matched, tbl.*
FROM description
RLIKE
同義語として使用できますが、REGEXP
より人気があるようです[要出典] .
REGEXPの MySQL マニュアルから:
REGEXP は、バイナリ文字列で使用する場合を除き、大文字と小文字を区別しません。
mysql> SELECT 'a' REGEXP 'A', 'a' REGEXP BINARY 'A';
-> 1 0
REGEXP
またはを使用しRLIKE
ます。
あなたの場合、MATCH() ... AGAINST
MyISAMストレージエンジンで全文検索を使用できます。
IN()
または、@Wiseguyが述べたように使用できます