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。
这种情况很适合使用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
可能比多个LIKE
s更快OR
。