MySQLi WHERE LIKE多个标准

Dav*_*ore 5 php mysqli

我有以下示例表和属性:

---------------------------
|  Name  |       Town     |
---------------------------
| Name 1 |      POOLE     |
| Name 2 | POOLE/WALLASEY |
| Name 3 | POOLE/WALLASEY |
| Name 4 |      POOLE     |
---------------------------
Run Code Online (Sandbox Code Playgroud)

我在PHP中使用以下SQL语句来检索行:

SELECT * FROM `table` WHERE `Town` LIKE '%".$global->getPlayerTown()."%'
Run Code Online (Sandbox Code Playgroud)

根据POOLE数据库返回的标准:

---------------------------
|  Name  |       Town     |
---------------------------
| Name 1 |      POOLE     |
| Name 2 | POOLE/WALLASEY |
| Name 3 | POOLE/WALLASEY |
| Name 4 |      POOLE     |
---------------------------
Run Code Online (Sandbox Code Playgroud)

但是,在使用条件时POOLE/WALLASEY,查询将返回:

---------------------------
|  Name  |       Town     |
---------------------------
| Name 2 | POOLE/WALLASEY |
| Name 3 | POOLE/WALLASEY |
---------------------------
Run Code Online (Sandbox Code Playgroud)

如何智能地告诉PHP将字符串拆分为一个查询中的单独条件(即POOLEWALLASEY),以便查询检索所有行?

小智 3

SELECT * FROM `table` WHERE `town` REGEXP 'POOLE|WALLASEY';
Run Code Online (Sandbox Code Playgroud)

这将匹配具有一个或多个 POOLE 或 WALLASEY 实例的任何行。

至于 PHP 方面,根据数据集中有多少种分隔符(在本例中为“/”),它可能很快就会变得相当混乱。但将“/”替换为“|” 在 getPlayerTown() 中似乎是一种方法。

至于性能,我不确定 REGEXP 与 LIKE 相比如何。

https://dev.mysql.com/doc/refman/5.7/en/regexp.html