有什么方法可以使 Mysql 5.1.x 中的 UNIQUE 索引不区分大小写?

发布于 2024-11-27 16:03:29 字数 375 浏览 2 评论 0原文

如果是这样 - 必须更改此表中的哪些内容?

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;

If so - What must change in this table ?

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;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

蓝海似她心 2024-12-04 16:03:29

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

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

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

If you mean case sensitive then:

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

If you mean case insensitive then:

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

For table level do (for case insensitive):

ALTER TABLE `contestants` DEFAULT CHARACTER SET latin1 COLLATE latin1_general_ci

Note that table level only affects new columns.

For database level do (for case insensitive):

ALTER DATABASE `database_name` CHARACTER SET latin1 COLLATE latin1_general_ci

Note that database level only affect new tables.

未央 2024-12-04 16:03:29

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

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

Yes, use a case-insensitive collation on the columns involved.

MySQL Manual :: Column Character Set and Collation

蓝天 2024-12-04 16:03:29

这在 Mysql 5.5 中对我有用

ALTER TABLE `contestants` MODIFY
`ContestantName` VARCHAR(50) 
CHARACTER SET latin1
COLLATE latin1_bin;

This worked for me in Mysql 5.5

ALTER TABLE `contestants` MODIFY
`ContestantName` VARCHAR(50) 
CHARACTER SET latin1
COLLATE latin1_bin;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文