首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 查詢含空格字段值:REPLACE 與 TRIM 組合技

     編輯:MySQL 綜合教學

問題場景

數據庫字段值或查詢條件包含不確定的空格(首尾、中間),導致精確匹配與 LIKE 失效。

兩大清洗函數

函數語法作用
REPLACEREPLACE(str, from_str, to_str)全量替換,清除內部空格
TRIMTRIM([BOTH|LEADING|TRAILING] [remstr] FROM str)修剪首尾指定字符(默認空格)

TRIM 變體示例

TRIM('  phpernote  ')           -- 'phpernote'
TRIM(LEADING 'x' FROM 'xxxabc') -- 'abc'
TRIM(BOTH 'x' FROM 'xxxabcxxx') -- 'abc'
TRIM(TRAILING 'xyz' FROM 'abcxyz') -- 'abc'

標準化匹配模式

-- 精確匹配(雙邊清洗)
SELECT * FROM `table` 
WHERE TRIM(REPLACE(title, ' ', '')) = TRIM(REPLACE('李楊 技術 博客', ' ', ''));

-- 模糊匹配
SELECT * FROM `table` 
WHERE TRIM(REPLACE(title, ' ', '')) LIKE TRIM(REPLACE('%李楊 技術 博客%', ' ', ''));

性能建議

  • 函數作用于列會導致索引失效(全表掃描)
  • 大表建議:
    1. 寫入時應用層標準化(去空格)
    2. 或添加生成列 title_clean VARCHAR(255) GENERATED ALWAYS AS (TRIM(REPLACE(title,' ',''))) STORED 並建索引
  • 中小表可接受函數查詢,條件部分清洗移至應用層減輕數據庫壓力
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved