[英]How can I ignore spaces in mysql search query with LIKE?
我正在開發一個程序,其中用戶通過課程代碼或名稱搜索“課程”。 我正在嘗試這樣做,如果用戶搜索“ 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);
除了不忽略空格外,第一個代碼還可以完美地工作。
您將替換放在錯誤的一側。 為了安全起見,讓我們對兩個操作數都這樣做:
REPLACE(course_code, ' ', '') LIKE REPLACE(:searchText, ' ', '')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.