devops icon indicating copy to clipboard operation
devops copied to clipboard

mysql 字符集

Open heidsoft opened this issue 1 year ago • 1 comments

  1. utf8mb4_general_ci:utf8mb4是utf8的超集,可以用来存储更多的字符,包括一些特殊的表情符号。_general_ci表示排序规则不区分大小写。

  2. utf8mb4_unicode_ci:与utf8mb4_general_ci类似,它也是utf8的超集,可以存储更多的字符。不同的是,_unicode_ci比_general_ci的排序规则更严格,它会更准确地根据Unicode标准进行排序和比较。

  3. utf8_general_ci:这是utf8字符集的排序规则,_general_ci表示排序规则不区分大小写。

总的来说,这三者的主要区别在于能够存储的字符范围和排序/比较规则的不同。如果需要存储一些特殊的字符(例如表情符号),应该选择utf8mb4_unicode_ci或utf8mb4_general_ci。如果对排序和比较的准确性有较高的要求,应该选择utf8mb4_unicode_ci。

heidsoft avatar Jan 10 '24 06:01 heidsoft

你可以使用以下SQL语句来修改表的字符集:

ALTER TABLE your_table_name 
CONVERT TO CHARACTER SET utf8mb4 
COLLATE utf8mb4_general_ci;

上述语句会将表的字符集更改为utf8mb4,并将排序规则更改为utf8mb4_general_ci。请将your_table_name替换为你的表名。

请注意,在运行此操作时,MySQL会尝试将所有的字符数据转换为新的字符集。如果新的字符集不支持某些字符,那么这些字符可能会被更改或丢失。因此,建议你在运行这样的操作之前先备份你的数据。

heidsoft avatar Jan 10 '24 06:01 heidsoft