如何使用like子句选择多个值

1 mysql mysql-workbench mysql-5.7

SELECT * 
from table 
WHERE column LIKE "AAA%" 
   OR column LIKE "BBB%" 
   OR column LIKE "CCC%"
Run Code Online (Sandbox Code Playgroud)

我有超过10个值要选择,所以像上面的例子那样写是不合适的。有没有办法在一句话中选择可能的值?我正在使用 MySQL。

Eze*_*nay 5

这种情况很适合使用REGEXP而不是LIKE.

SELECT * 
from table 
WHERE column REGEXP '^(AAA|BBB|CCC)'
Run Code Online (Sandbox Code Playgroud)

REGEXP不区分大小写。对于区分大小写的搜索,请使用REGEXP BINARY.

SELECT * 
from table 
WHERE column REGEXP BINARY '^(AAA|BBB|CCC)'
Run Code Online (Sandbox Code Playgroud)

REGEXP不能从索引中受益,因此如果LIKE也不使用索引,它可能只是一个有效的选择。使用LIKE可以单独访问索引的多个语句(就像在您的情况下,如果被索引等在末尾有一个通配符),UNION使用单个执行单个查询LIKE在大型数据集中可能最有效。

但是,如果您的查询主要按日期范围进行过滤,那么单个REGEXP可能比多个LIKEs更快OR

有关REGEXPMySQL 的更多信息,请参阅