がるの健忘録

エンジニアでゲーマーで講師で占い師なおいちゃんのブログです。

アリエナイ orz

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