然后你查询的时候,where user_name = 'ab'会把表中user_name的值为:‘ab’、‘Ab’、‘AB’、‘aB’的数据行都查询出来。
而当使用 where user_password = 'ab';只会把表中user_password的值为:‘ab’的数据行查询出来。
另外,真正项目实践中,密码字段不会明文存储在表中的,都是经过各种加密算法,加密后生成一个字符串之后在存储在表中。判断密码匹配的时候,也是根据用户输入的密码,经过相同的算法再次加密后,再和数据库中存储的加密字符串进行比较。所以我觉得你的密码字段没有必要这个这个大小写敏感的设置。
分不同的类型,可按以下三种方式查询:
一、查看MySQL数据库服务器和数据库MySQL字符集。
命令:
mysql> show variables like '%char%'二、查看MySQL数据表(table)的MySQL字符集。
命令:
mysql> show table status from sqlstudy_db like '%countries%'三、查看MySQL数据列(column)的MySQL字符集。
命令:
mysql> show full columns from countries 可以保存这个字符没有问题,mysql>insert into test values(7,char(129))
Query OK, 1 row affected (0.00 sec)
mysql>insert into test values(7,char(130))
Query OK, 1 row affected (0.00 sec)
mysql>insert into test values(7,char(128))
Query OK, 1 row affected (0.00 sec)
mysql>insert into test values(7,char(128))
Query OK, 1 row affected (0.00 sec)
mysql>select ascii(name) from test where id=7
+-------------+
| ascii(name) |
+-------------+
| 129 |
| 130 |
| 128 |
| 128 |
+-------------+
4 rows in set (0.00 sec)
mysql>select * from test where id=7
+------+------+
| id | name |
+------+------+
|7 | ? |
|7 | ? |
|7 | €|
|7 | €|
+------+------+
4 rows in set (0.00 sec)
显示为?是因为当前字符集的原因,试试改你的数据库字符集
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)