首頁 > 資料庫 > mysql教程 > 為什麼 MySQL 的 LIKE 運算子在使用二進位字串時區分大小寫?

為什麼 MySQL 的 LIKE 運算子在使用二進位字串時區分大小寫?

Barbara Streisand
發布: 2024-11-07 19:00:03
原創
517 人瀏覽過

Why is MySQL's LIKE Operator Case Sensitive When Using a Binary String?

MySQL 中LIKE 的區分大小寫

在MySQL 中使用查詢「SELECT concat_ws(title,description) as concatenated 中使用查詢「SELECT concat_ws(title,description) as concatenated 執行LILIas concatenated連接LIKE '%SearchTerm%';",可能會注意到搜尋區分大小寫,即使表是使用utf8_general_ci 排序規則和MyISAM 儲存引擎進行編碼的。

此行為的原因是當任一運算元是二進位字串時,LIKE 運算子執行區分大小寫的比較。在這種情況下,「連接」欄位是一個二進位字串,導致搜尋區分大小寫。

要解決此問題並使搜尋不區分大小寫,建議使用BINARY 關鍵字和LIKE運算子:

SELECT .... FROM .... WHERE `concatenated` LIKE BINARY '%SearchTerm%';
登入後複製

這確保字串比較是按二進位執行的,忽略任何大小寫差異。

或者,COLLATE 關鍵字可以與utf8_bin 排序規則一起使用來使搜尋不區分大小寫:

SELECT ....
FROM ....
WHERE `concatenated` like '%SearchTerm%' COLLATE utf8_bin;
登入後複製

這兩種方法都有效地修改了搜尋行為,使其不區分大小寫,同時保留utf8_general_ci 排序規則的效能優勢。

以上是為什麼 MySQL 的 LIKE 運算子在使用二進位字串時區分大小寫?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板