字符集,编码,校对
使用字符集和校对顺序
查看所支持的字符集完整列表,使用以下语句:
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、聚集函数、别名等。

浙公网安备 33010602011771号