首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 模糊查詢四大通配符用法詳解:%、_、[]、[^] 與特殊字符轉義

     編輯:MySQL 資料庫相關知識

四大通配符

符號含義範例匹配結果說明
%任意 0~n 個字符LIKE '%三%'「張三」「張貓三」「三腳貓」「唐三藏」均匹配
_任意單個字符LIKE '_三_'僅匹配三字且中間是「三」的,如「唐三藏」
[abc]字符集合中任一字符LIKE '[張李王]三'匹配「張三」「李三」「王三」,非「張李王三」
[^abc]非字符集合中任一字符LIKE '[^張李王]三'匹配「趙三」「孫三」等非張李王姓的「三」

進階組合

-- 既含「三」又含「貓」
WHERE u_name LIKE '%三%' AND u_name LIKE '%貓%'

-- 以「三」開頭、共三字
WHERE u_name LIKE '三__'

-- 範圍寫法:[0-9]、[a-z]
WHERE u_name LIKE '老[1-9]'

查詢包含通配符本身的字符串(轉義)

若要搜尋字面 %、_、[,需用 [] 包裹:

WHERE col LIKE '%[%]%'   -- 含字面 %
WHERE col LIKE '%[_]%'   -- 含字面 _
WHERE col LIKE '%[[]%'   -- 含字面 [

應用層轉義函數(PHP 範例)

function sql_like_escape($str) {
    $str = str_replace('[', '[[', $str);   -- 必須最先處理 [
    $str = str_replace('_', '[_]', $str);
    $str = str_replace('%', '[%]', $str);
    return $str;
}

性能提醒

  • LIKE 'abc%'(前綴固定)可用索引;LIKE '%abc' 或 LIKE '%abc%' 全表掃描。
  • 大表模糊查詢建議:全文索引(MATCH...AGAINST)、Elasticsearch、或冗餘 n-gram 列。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved