3

MySQL クエリで正規表現の単語境界を使用するにはどうすればよいですか?

たとえば、「製品」または「ニュースレター」のいずれかに一致させたいのですが、

それはうまく動作しますOR

IF(? = 'product' OR ? = 'newsletter', ... , ...)

しかし、正規表現はどうですか?下のような感じでしょうか。

IF(? REGEXP '^('product'||'newsletter')+$', ..., ... ) 
4

2 に答える 2

5
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
于 2012-10-29T10:09:04.917 に答える
1

REGEXPまたはを使用しRLIKEます。

Regular expressions in MySQL

あなたの場合、MATCH() ... AGAINSTMyISAMストレージエンジンで全文検索を使用できます。

IN()または、@Wiseguyが述べたように使用できます

于 2012-05-31T03:41:53.363 に答える