Insert dữ liệu trong mysql mà phân biệt kí tự hoa - thường

Thông thường mysql không phân biệt chư hoa, chữ thường vậy có cách nào để insert dữ liệu trong cột primary key mà phân biệt chữ hoa, chữ thường không nhỉ. Ví dụ với id là aaa và AAA thì vẫn có thể insert và select được

Câu hỏi hay !
MySQL và SQL Server sử dụng case - insensitive by default.

Nếu bạn muốn phân biệt chử Hoa/Thường thì đổi sang collation khác. Trong trường hợp này có thể đổi collation ở mức column như sau:

MariaDB [labs]> CREATE TABLE test_cs( c1 VARCHAR(10) COLLATE  utf8_bin PRIMARY KEY, c2 varchar(10)); 
Query OK, 0 rows affected (0.07 sec)

MariaDB [labs]> desc test_cs ;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| c1    | varchar(10) | NO   | PRI | NULL    |       |
| c2    | varchar(10) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.02 sec)

MariaDB [labs]> 
MariaDB [labs]> insert into test_cs values('AAAA','row 1') ;
Query OK, 1 row affected (0.03 sec)

MariaDB [labs]> insert into test_cs values('aaaa','row 2') ;
Query OK, 1 row affected (0.04 sec)

MariaDB [labs]> select * from test_cs ;
+------+-------+
| c1   | c2    |
+------+-------+
| AAAA | row 1 |
| aaaa | row 2 |
+------+-------+
2 rows in set (0.01 sec)

MariaDB [labs]> insert into test_cs values('aaaa','row 3') ;
ERROR 1062 (23000): Duplicate entry 'aaaa' for key 'PRIMARY'

MariaDB [labs]>
2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?