The content in the MySQL DATA table is case-sensitive. By default, MYSQL queries are case-insensitive. For example:
mysql> create table t1( -> name varchar(10)); Query OK, 0 rows affected (0.09 sec) mysql> insert into t1 values('you'),('You'),('YOU'); Query OK, 3 rows affected (0.05 sec) Records: 3 Duplicates: 0 Warnings: 0
For this table, the results of the following two queries are the same by default:
mysql> select * from t1 where name = 'you'; +------+ | name | +------+ | you | | You | | YOU | +------+ 3 rows in set (0.00 sec) mysql> select * from t1 where name = 'YOU'; +------+ | name | +------+ | you | | You | | YOU | +------+ 3 rows in set (0.00 sec)
If you want MYSQL to know whether the letters you entered are in upper or lower case, modify the table:
mysql> alter table t1 change name name varchar(10) binary; Query OK, 3 rows affected (0.20 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> select * from t1 where name = 'you'; +------+ | name | +------+ | you | +------+ 1 row in set (0.00 sec) mysql> select * from t1 where name = 'YOU'; +------+ | name | +------+ | YOU | +------+ 1 row in set (0.00 sec)
If you just want to implement it in an SQL statement:
mysql> select * from t1 where name = binary 'YOU'; +------+ | name | +------+ | YOU | +------+ 1 row in set (0.02 sec) mysql> select * from t1 where name = binary 'you'; +------+ | name | +------+ | you | +------+ 1 row in set (0.00 sec)
If you don't want to be so troublesome and want to make the service case consistent when it is enabled, you can modify my. ini or my. cnf.
[Mysqld] lower_case_table_names = 1 (0: Yes; 1: No)
Then restart the MYSQL service.
mysql> show variables like '%case_table%'; +------------------------+-------+ | Variable_name | Value | +------------------------+-------+ | lower_case_table_names | 1 | +------------------------+-------+ 1 row in set (0.00 sec)