http://dev.mysql.com/doc/refman/4.1/ja/char.html
CHAR 型と VARCHAR 型のカラム値のソートと比較は、テーブルの作成時に BINARY 属性が指定されている場合を除いて、ケース非依存方式で行われます。
………………………………………え゜?
おぞましい予感を前提に、実験君。
まずは材料。
create table test ( a varchar(100), b text, c varchar(100) binary, d text binary ); insert into test(a,b,c,d) value('aaa', 'aaa', 'aaa', 'aaa'); insert into test(a,b,c,d) value('AAA', 'AAA', 'AAA', 'AAA'); insert into test(a,b,c,d) value('bbb', 'bbb', 'bbb', 'bbb'); insert into test(a,b,c,d) value('BBB', 'BBB', 'BBB', 'BBB');
ここで質問。
select * from test where a='aaa';
select * from test where b='aaa';
select * from test where c='aaa';
select * from test where d='aaa';
それぞれの結果を予想してください。
旋律…もとい、戦慄の、こたえ。
mysql> select * from test where a='aaa'; +------+------+------+------+ | a | b | c | d | +------+------+------+------+ | aaa | aaa | aaa | aaa | | AAA | AAA | AAA | AAA | +------+------+------+------+ 2 rows in set (0.00 sec) mysql> select * from test where b='aaa'; +------+------+------+------+ | a | b | c | d | +------+------+------+------+ | aaa | aaa | aaa | aaa | | AAA | AAA | AAA | AAA | +------+------+------+------+ 2 rows in set (0.00 sec) mysql> select * from test where c='aaa'; +------+------+------+------+ | a | b | c | d | +------+------+------+------+ | aaa | aaa | aaa | aaa | +------+------+------+------+ 1 row in set (0.00 sec) mysql> select * from test where d='aaa'; +------+------+------+------+ | a | b | c | d | +------+------+------+------+ | aaa | aaa | aaa | aaa | +------+------+------+------+ 1 row in set (0.00 sec)
……………まてや( ゜Д゜)ゴルァ!
知らなかった………orz