SQL的LIKE查詢語句中,有一些特殊的字元,需要轉換後才能搜尋到結果:
':用於包裹搜尋條件,需轉為\';
%:用於代替任意數目的任意字元,需轉換為\%;
_:用於代替一個任意字元,需轉換為\_;
\:轉義符號,需轉換為\\\\。
以下是一些匹配的舉例。
SELECT * FROM `table` WHERE `title` LIKE 'a\'b%'; -- 搜尋a'b...
SELECT * FROM `table` WHERE `title` LIKE 'a\%b%'; -- 搜尋a%b...
SELECT * FROM `table` WHERE `title` LIKE 'a\_b%'; -- 搜尋a_b...
SELECT * FROM `table` WHERE `title` LIKE 'a\\\\%'; -- 搜尋a\b...
在PHP程式碼中,可以用這樣的方法批次替換:
function filterLike($keyword) {
$search = array('\'', '%', '_', '\\');
$replace = array('\\\'', '\\%', '\\_', '\\\\\\\\');
return str_replace($search, $replace, $keyword);
}