MYSQLで複数の値のためにLIKEを使用するための良い方法はありますか?

JIAジミー:

表があります言うuser以下の通り:

+----------+------------------+------+-----+---------+----------------+
| Field    | Type             | Null | Key | Default | Extra          |
+----------+------------------+------+-----+---------+----------------+
| id       | int(11) unsigned | NO   | PRI | NULL    | auto_increment |
| name     | char(64)         | NO   |     | NULL    |                |
| img_hash | varchar(32)      | NO   |     |         |                |
+----------+------------------+------+-----+---------+----------------+

そして私は、フィールド名のあいまい一致を作りたい、とのように試合を保留リスト内に複数の名前があります。

["name1", "name2", "name3", ...]

私はやってトリングです。

select 
    id, name, img_hash 
from
    user
where name like "%name1%" 
or name like "%name2%"
or name like "%name3%"
...

そこより良い方法は、この問題でのファジー・マッチング作業を行う場合は?

ありがとうございました。

アルンPalanisamy:

あなたが試すことができます REGEXP

SELECT ID, NAME, IMG_HASH FROM USER 
WHERE NAME REGEXP 'name1|name2|name3'

もっと簡単なバージョンは、以下のようなものになるだろう。あなたは、直接内部名をコピー&ペーストすることができますCONCAT_WS

SELECT ID, NAME, IMG_HASH FROM USER 
WHERE NAME REGEXP CONCAT_WS("|","name1", "name2","name3");

HEREチェックDEMO

これは使用するより遅くなる場合がありますのでご注意ください LIKE

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=15205&siteId=1