mysqli - 如何在 SQL 中搜索带星号的 cloumn?
问题描述
我尝试为我的数据库创建高级搜索。我想做这样的事情:如果用户输入搜索 =overf**w
并且我的数据库中有一个他的值 = overflow
- 显示他的 cloumn。这是我的代码:
$name = str_replace('*', '_', $name);
SELECT name FROM table WHERE name LIKE CONCAT('%', ?, '%')
它不工作,我不知道是什么问题。
解决方案
在这种情况下不能使用 LIKE,需要使用 REGEXP() 进行通配符搜索。将 * 或 ** 替换为.*
. 要仅返回以给定值^
开头的名称,请在正则表达式的开头使用
SELECT name
FROM actors
WHERE name REGEXP('^overf.*w')
我不知道 php 但你的 $name 参数应该这样设置(在伪代码中)
$name = '^' + replace($name, '**', '.*')