數據庫字段值或查詢條件包含不確定的空格(首尾、中間),導致精確匹配與 LIKE 失效。
| 函數 | 語法 | 作用 |
|---|---|---|
REPLACE | REPLACE(str, from_str, to_str) | 全量替換,清除內部空格 |
TRIM | TRIM([BOTH|LEADING|TRAILING] [remstr] FROM str) | 修剪首尾指定字符(默認空格) |
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('%李楊 技術 博客%', ' ', ''));
title_clean VARCHAR(255) GENERATED ALWAYS AS (TRIM(REPLACE(title,' ',''))) STORED 並建索引