如何在SQL中搜索带有星号的列?

问题描述 投票:0回答:1

我尝试为我的数据库创建高级搜索。 我想做这样的事情:如果用户输入搜索=

overf**w
我的数据库中有一个列,他的价值 =
overflow
- 向他展示。 这是我的代码:

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

它不起作用,我不知道问题出在哪里。

php mysqli
1个回答
0
投票

在这种情况下不能使用 LIKE,需要使用 REGEXP() 进行通配符搜索。将 * 或 ** 替换为

.*
。要仅返回以给定值开头的名称,请在正则表达式的开头使用
^

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

我不懂 php,但你的 $name 参数应该像这样设置(以伪代码)

$name = '^' + replace($name, '**', '.*') 
© www.soinside.com 2019 - 2024. All rights reserved.