MySQL用LIKE特殊字元搜尋

pythontab發表於2019-09-23

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);

}


相關文章