首页 > 解决方案 > 如何在 SQL 中搜索带星号的 cloumn?

问题描述

我尝试为我的数据库创建高级搜索。我想做这样的事情:如果用户输入搜索 =overf**w 并且我的数据库中有一个他的值 = overflow- 显示他的 cloumn。这是我的代码:

$name = str_replace('*', '_', $name);
SELECT name FROM table WHERE name LIKE CONCAT('%', ?, '%')

它不工作,我不知道是什么问题。

标签: mysqli

解决方案


在这种情况下不能使用 LIKE,需要使用 REGEXP() 进行通配符搜索。将 * 或 ** 替换为.*. 要仅返回以给定值^开头的名称,请在正则表达式的开头使用

SELECT name 
FROM actors 
WHERE name REGEXP('^overf.*w')

我不知道 php 但你的 $name 参数应该这样设置(在伪代码中)

$name = '^' + replace($name, '**', '.*') 

推荐阅读