簡體   English   中英

MySQL是否在查詢中轉換UTF-8字符(而不是結果)並去除重音?

[英]Is MySQL converting UTF-8 characters in my query (not the results), stripping accents?

我在數據庫中有一些記錄,其中VARCHAR字段之一可能包含帶重音的字母。 如果使用CLI MySQL客戶端執行以下查詢,則會返回1行,這是正確的:

SELECT site_id, site_name FROM tbl_site WHERE site_name LIKE '%ém%'

但是,使用某些PHP(PDO)進行相同的查詢將返回所有包含'em'的行,而不返回包含'ém'的一行。 更奇怪的是,MySQL查詢記錄顯示查詢包含“é”,而不是“ e”。

任何想法可能在這里發生什么?

這取決於字符集和數據庫,表或列的排序規則 您是否要對同一張表執行查詢?

您可以發布以下結果嗎?

SHOW CREATE TABLE <yourTable>;

此外,您可以在查詢級別指定所需的排序規則:

SELECT site_id, site_name FROM tbl_site WHERE site_name LIKE '%ém%' collate utf8_bin;
-- same as
SELECT site_id, site_name FROM tbl_site WHERE BINARY site_name LIKE '%ém%';

(注意:您應該非常仔細地評估此類查詢的性能)

utf8_general_ci排序規則不區分大小寫不區分重音。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM