簡體   English   中英

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

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM