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

Pai*_*aiS 26 mysql

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

CREATE TABLE USERS
(
    USER_ID SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
    USER_NAME VARCHAR(50) BINARY NOT NULL
)
Run Code Online (Sandbox Code Playgroud)

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

谢谢!

dei*_*nst 33

ALTER TABLE USERS CHANGE USER_NAME USER_NAME VARCHAR(50) BINARY NOT NULL;
Run Code Online (Sandbox Code Playgroud)

  • 引述MySQL文档http://dev.mysql.com/doc/refman/5.1/en/alter-table.html,"如果你想改变一个列的类型而不是名称,CHANGE语法仍然需要一个老新的列名,即使它们是相同的." (15认同)

def*_*nes 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;
Run Code Online (Sandbox Code Playgroud)

第一行转换为二进制数据类型(尝试最小化字符丢失),第二行转换回VARCHAR具有BINARY排序规则的类型.

它实际上可能是优选的以存储为二进制类型之一(BLOB,BINARY,或VARBINARY),而不是简单地核对BINARY.我建议你稍微比较,你的里程可能会有所不同,具体取决于你的实际数据和你需要运行的查询.


Fal*_*234 5

你应该能够做这样的事情:

编辑:误读你打算做什么:

    ALTER TABLE USERS MODIFY
        USER_NAME VARCHAR(50)
          CHARACTER SET binary;
Run Code Online (Sandbox Code Playgroud)