字符集,编码,校对

使用字符集和校对顺序

查看所支持的字符集完整列表,使用以下语句:
SHOW CHARACTER SET;

为了查看所支持校对的完整列表,使用以下语句:
SHOW COLLATION;
此语句显示所有可用的校对,以及它们适用的字符集。可以看到有的字符集具有不止一种校对。例如,latin1对不同的欧洲语言有几种校对,而且许多校对出现两次,一次区分大小写(由_cs表示),一次不区分大小写(由_ci表示)。

确定所用的字符集和校对
SHOW VARIABLES LIKE 'character%';

SHOW VARIABLES LIKE 'character%';

给表指定字符集和校对
CREATE TABLE mytable
(
	column1 INT,
	column2 VARCHAR(10)
)DEFAULT CHARACTER SET hebrew  COLLATE hebrew_general_ci

此语句创建一个包含两列的表,并且指定一个字符集和一个校对顺序。

一般,MySQL如下确定使用什么样的字符集和校对。
 如果指定CHARACTER SET和COLLATE两者,则使用这些值。
 如果只指定CHARACTER SET,则使用此字符集及其默认的校对(如SHOW CHARACTER SET的结果中所示)。
 如果既不指定CHARACTER SET,也不指定COLLATE,则使用数据库默认。

除了能指定字符集和校对的表范围外,MySQL还允许对每个列设置它们,如下所示:

CREATE TABLE mytable
(
	column1 INT,
	column2 VARCHAR(10),
	column3 VARCHAR(10) CHARACTER SET latin1 COLLATE latin1_general_ci
)DEFAULT CHARACTER SET hebrew  COLLATE hebrew_general_ci

这里对整个表以及一个特定的列指定了CHARACTER SET和COLLATE。

在检索时指定校对

如果你需要用与创建表时不同的校对顺序排序特定的SELECT语句,可以在SELECT语句自身中进行:
SELECT * FROM customers ORDER BY cust_name COLLATE latin1_general_cs
SELECT的其他COLLATE子句 除了这里看到的在ORDER BY子句中使用以外,COLLATE还可以用于GROUP BY、HAVING、聚集函数、别名等。

posted @ 2020-09-29 18:01  bibicode  阅读(145)  评论(0)    收藏  举报