8

如果是这样 - 此表中必须更改什么?

CREATE TABLE  contestants 
( 
  idContestants  int(10) unsigned NOT NULL AUTO_INCREMENT,
  idEvent        int(10) unsigned NOT NULL,
  ContestantName  varchar(50) DEFAULT NULL,
  PRIMARY KEY (idContestants),
  UNIQUE KEY Index_UniqueName (idEvent,ContestantName),
)
ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
4

3 回答 3

22

如果您的意思是区分大小写,那么:

ALTER TABLE `contestants` CHANGE `ContestantName` `ContestantName` VARCHAR( 50 )
CHARACTER SET latin1 COLLATE latin1_bin NULL DEFAULT NULL 

如果您的意思是不区分大小写,那么:

ALTER TABLE `contestants` CHANGE `ContestantName` `ContestantName` VARCHAR( 50 )
CHARACTER SET latin1 COLLATE latin1_general_ci NULL DEFAULT NULL 

对于表级别执行(不区分大小写):

ALTER TABLE `contestants` DEFAULT CHARACTER SET latin1 COLLATE latin1_general_ci

请注意,表级别仅影响新列。

对于数据库级别执行(不区分大小写):

ALTER DATABASE `database_name` CHARACTER SET latin1 COLLATE latin1_general_ci

请注意,数据库级别仅影响新表。

于 2011-07-31T08:16:36.833 回答
3

是的,对所涉及的列使用不区分大小写的排序规则。

MySQL 手册 :: 列字符集和排序规则

于 2011-07-31T08:13:49.093 回答
0

这在 Mysql 5.5 中对我有用

ALTER TABLE `contestants` MODIFY
`ContestantName` VARCHAR(50) 
CHARACTER SET latin1
COLLATE latin1_bin;
于 2013-06-28T15:55:25.227 回答