友快網

導航選單

記一次mysql的collate編碼引起大小寫區分的問題

建立mysql的表時,如果

collate選擇uft-8_general_ci ,則表示一般比較,不區分大小寫,

而選擇utf8-bin表示嚴格區分大小寫。

我們將collate稱為排序規則,建立表時,一般會選擇排序規則,列的排序規則預設與表的相同

CREATE TABLE `t_user` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `name` text NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8_unicode_ci;

CREATE TABLE `t_user` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `name` text NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8_bin;

當collate=

uft-8_general_ci

對應的效果是:

SELECT * from t_user where name=‘abc’; 與SELECT * from t_user where name=‘Abc’;

效果一致,不區分大小寫

當collate=

uft8-bin

SELECT * from t_user where name=‘abc’; 與SELECT * from t_user where name=‘Abc’;

查詢的效果不同

值得注意的是,列可以選擇自己的collate,列的優先順序高於表的collate優先順序,透過navicate可以設定表和列的collate,如下圖

列的collate

表的collate的設定

表的collate

上一篇:冬天,這湯我家兩天煮一次,營養滋補不上火,氣色也能越來越好
下一篇:想身體不老,沒事吃的好食物,有助肝臟解毒,增進身體健康,美容