將多個字段拼接為單一字符串,再使用 LIKE 進行模糊匹配。
CONCAT(str1, str2, ...)
-- 示例
CONCAT('abc', 'd', 'ef', 'g') -- 'abcdefg'
CONCAT('abc', 3, 'ef', 'g') -- 'abc3efg' (數字隱式轉字符串)
SELECT * FROM `magazine`
WHERE CONCAT(`title`, `tag`, `description`) LIKE '%關鍵字%';
原理:將 title、tag、description 三字段拼接後,一次 LIKE 匹配。
CONCAT 再匹配。CONCAT,CPU 消耗大。ALTER TABLE magazine ADD FULLTEXT idx_ft (title, tag, description); 然後 MATCH(title,tag,description) AGAINST('關鍵字')。search_text TEXT 列,寫入時觸發器自動拼接三字段,建全文索引或普通索引(前綴)。WHERE title LIKE '%kw%' OR tag LIKE '%kw%' OR description LIKE '%kw%',配合各字段前綴索引(LIKE 'kw%' 才能用索引)。CONCAT + LIKE 可接受。