MySQL の char, varchar 型のカラムを検索対象にする時は要注意。
何も考えずに CREATE TABLE してしまうと、大文字小文字の区別が無い型になってしまう。
詳しくは、以下の例を参照。
CREATE TABLE main_table ( user_id int NOT NULL auto_increment, product_id char(128) NOT NULL, PRIMARY KEY (user_id), KEY idx_product_id (product_id) ) TYPE=InnoDB;
mysql> select * from main_table; +---------+------------+ | user_id | product_id | +---------+------------+ | 1 | a | | 2 | A | | 3 | b | | 4 | B | | 5 | c | | 6 | C | +---------+------------+ 6 rows in set (0.00 sec)
mysql> select * from main_table where product_id='a' or product_id='c'; +---------+------------+ | user_id | product_id | +---------+------------+ | 1 | a | | 2 | A | | 5 | c | | 6 | C | +---------+------------+ 6 rows in set (0.00 sec)
小文字の `a' と `c' だけヒットしてほしいのに、大文字の `A' と `C' までヒットした。
CREATE TABLE main_table ( user_id int NOT NULL auto_increment, product_id char(128) binary NOT NULL, PRIMARY KEY (user_id), KEY idx_product_id (product_id) ) TYPE=InnoDB;
mysql> select * from main_table where product_id='a' or product_id='c'; +---------+------------+ | user_id | product_id | +---------+------------+ | 1 | a | | 5 | c | +---------+------------+ 3 rows in set (0.00 sec)
小文字の `a' と `c' だけヒット。