将Mysql Table列更改为区分大小写

时间:2010-08-03 12:02:57

标签: mysql

我的Mysql数据库中有一个表,用于身份验证。现在,我需要使身份验证案例敏感。 谷歌搜索,我已经意识到Mysql列对于搜索操作不区分大小写(与Oracle相反),并且在创建表时可以通过指定“二进制”来更改默认行为,即。

CREATE TABLE USERS
(
    USER_ID SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
    USER_NAME VARCHAR(50) BINARY NOT NULL
)

有人可以告诉我如何更改Mysql中的表以将“二进制”添加到数据库的现有列中吗?

谢谢!

4 个答案:

答案 0 :(得分:31)

ALTER TABLE USERS CHANGE USER_NAME USER_NAME VARCHAR(50) BINARY NOT NULL;

答案 1 :(得分:7)

请参阅http://dev.mysql.com/doc/refman/5.0/en/charset-conversion.html

示例:

ALTER TABLE some_table MODIFY some_column BLOB;
ALTER TABLE some_table MODIFY some_column VARCHAR(50) BINARY;

第一行转换为二进制数据类型(尝试最小化字符丢失),第二行转换回VARCHAR类型并进行BINARY整理。

实际上,最好将其存储为二进制类型之一(BLOBBINARYVARBINARY),而不是简单地整理BINARY。我建议你稍微比较,你的里程可能会有所不同,具体取决于你的实际数据和你需要运行的查询。

答案 2 :(得分:4)

你应该可以这样做:

编辑:误读您打算做的事情:

ALTER TABLE USERS MODIFY
    USER_NAME VARCHAR(50)
      CHARACTER SET latin1
      COLLATE latin1_bin;

答案 3 :(得分:-1)

在进行身份验证时,您仍然可以在表上执行区分大小写的查询,而不是更改表,使用BINARY选项,如下所示:

SELECT BINARY * FROM USERS where USER_ID = 2 AND USER_NAME = 'someone' LIMIT 1;

这有帮助吗?