回答:
これを行うより速い方法:
WHERE interests LIKE '%sports%' OR interests LIKE '%pub%'
これは:
WHERE interests REGEXP 'sports|pub'
このソリューションはここにあります:http : //forums.mysql.com/read.php?10,392332,392950#msg-392950
REGEXPの詳細はこちら:http ://www.tutorialspoint.com/mysql/mysql-regexps.htm
(select group_concat(myColumn separator '|') from..)
REGEXPをお試しください。このようにしてみてください:
SELECT * FROM table WHERE interests REGEXP 'sports|pub'
SELECT * FROM table WHERE interests NOT REGEXP 'sports|pub'
(>‿◠)✌
jazkat
5年前に提出された回答とどのように異なりますか?
そのまま使用することもできRLIKE
ます。
例えば:
SELECT * FROM TABLE_NAME WHERE COLNAME RLIKE 'REGEX1|REGEX2|REGEX3'
あなたのクエリは SELECT * FROM `table` WHERE find_in_set(interests, "sports,pub")>0
私が理解しているのは、テーブルの1つのフィールドに関心を格納しているということです。これは誤解です。あなたは間違いなく「金利」テーブルを持っている必要があります。
SELECT * FROM table WHERE find_in_set(interests, 'sports,pub')
、この手法はほとんどの状況で正規表現よりも優れています。
または、単語の先頭のみを照合する必要がある場合:
WHERE interests LIKE 'sports%' OR interests LIKE 'pub%'
正規表現のキャレット一致を使用できます。
WHERE interests REGEXP '^sports|^pub'
@Alexis Dufrenoyが提案したように、クエリは次のようになります。
SELECT * FROM `table` WHERE find_in_set('sports', interests)>0 OR find_in_set('pub', interests)>0
マニュアルの詳細情報。