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

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

Barbara Streisand
Barbara Streisand原創
2024-11-07 19:00:03467瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn