mysql 大小写敏感的一个解决方案
2014-01-07 11:07
253 查看
今天,有同事告诉我,我们游戏登陆的时候,账号和密码没有区分大小写,后来又发现创建账号和角色也没有区分大小写。思考登陆流程之后,应该是Mysql没有区分大小写敏感的问题。
在网上查了一下资料,Mysql支持大小写敏感的解决方案。发现了几种方案。
第一、修改数据库的设置,让Mysql支持大小写敏感,这个方案太激进了,数据库数据太多,这样改保不准会出什么问题。
第二、修改表结构和字符集,和第一种方案差不多,但是风险小一点。
第三、修改存储过程或者SQL语句,好处是不动数据库结构,缺点是涉及到的地方都的改。
权衡之后,还是选了第三种方案,只修改登录和创建的2个存储过程。
体方法是,使用mysql的binary关键字。
BINARY不是函数,是类型转换运算符,它用来强制它后面的字符串为一个二进制字符串,可以理解为在字符串比较的时候区分大小写。
测试如下:
mysql> select binary 'ABCD'='abcd' ret1, 'ABCD'='abcd'
ret2;
+--------+--------+
| ret1 |
ret2 |
+--------+--------+
| 0 | 1 |
+--------+--------+
1 row in set (0.00 sec)
在网上查了一下资料,Mysql支持大小写敏感的解决方案。发现了几种方案。
第一、修改数据库的设置,让Mysql支持大小写敏感,这个方案太激进了,数据库数据太多,这样改保不准会出什么问题。
第二、修改表结构和字符集,和第一种方案差不多,但是风险小一点。
第三、修改存储过程或者SQL语句,好处是不动数据库结构,缺点是涉及到的地方都的改。
权衡之后,还是选了第三种方案,只修改登录和创建的2个存储过程。
体方法是,使用mysql的binary关键字。
BINARY不是函数,是类型转换运算符,它用来强制它后面的字符串为一个二进制字符串,可以理解为在字符串比较的时候区分大小写。
测试如下:
mysql> select binary 'ABCD'='abcd' ret1, 'ABCD'='abcd'
ret2;
+--------+--------+
| ret1 |
ret2 |
+--------+--------+
| 0 | 1 |
+--------+--------+
1 row in set (0.00 sec)
相关文章推荐
- 【已解决】Windows下 MySQL大小写敏感 解决方案及分析
- MySQL大小写敏感问题和命名规范
- MySQL大小写敏感问题和命名规范
- 使用JDBC访问MySql的一个公共方法的解决方案
- MySql大小写敏感问题探索
- MYSQL的binary解决mysql数据大小写敏感问题 《转载》
- 需要“jquery”ScriptResourceMapping。请添加一个名为 jquery (区分大小写)的 ScriptResourceMapping"解决方案 .
- mysql大小写敏感与校对规则
- mysql中table名称大小写敏感的设置
- mysql数据查询大小写敏感问题
- MySql查询不区分大小写解决方案(两种)
- MySQL的表名的大小写敏感问题
- MYSQL的binary解决mysql数据大小写敏感问题的方法
- mysql创建和授权用户+配置文件位置+大小写敏感问题
- mysql 大小写敏感问题
- MySQL的大小写敏感设置
- MySQL数据记录大小写敏感问题【转】
- mysql大小写敏感问题
- mysql表名大小写敏感
- MySQL查询大小写是否敏感问题分析