如何用LIKE忽略mysql搜索查询中的空格?

时间:2016-12-11 20:26:27

标签: php mysql sql

我正在开发一个程序,用户通过课程代码或名称搜索“课程”。我试图这样做,如果用户搜索“CODE1002”,数据库中的CODE 1002 EL仍将返回(有空格)。正如其他帖子所示,我试图使用REPLACE功能但没有成功。

这是我当前的代码(但不会忽略空格):

$records = $conn->prepare('SELECT (SELECT COUNT(*) FROM courses WHERE (course_code LIKE :searchText OR course_name LIKE :searchText)) AS course_count, course_id, course_code, course_name FROM courses WHERE (course_code LIKE :searchText OR course_name LIKE :searchText) ORDER BY course_code LIMIT 6');

$final_search_term = "%".$search_term."%";
$records->bindParam(':searchText', $final_search_term);

以下是我尝试添加REPLACE以忽略course_code上的空格但未成功:

$records = $conn->prepare('SELECT (SELECT COUNT(*) FROM courses WHERE (REPLACE(course_code,' ','') LIKE :searchText OR course_name LIKE :searchText)) AS course_count, course_id, course_code, course_name FROM courses WHERE (REPLACE(course_code,' ','') LIKE :searchText OR course_name LIKE :searchText) ORDER BY course_code LIMIT 6');

$final_search_term = "%".$search_term."%";
$records->bindParam(':searchText', $final_search_term);

除了忽略空格之外,第一个代码完美无缺。

1 个答案:

答案 0 :(得分:4)

你把替换放错了方向。为了安全起见,让我们为两个操作数做到这一点:

REPLACE(course_code, ' ', '') LIKE REPLACE(:searchText, ' ', '')