drop table if exists t1; select 'a' = 'a', 'a' = 'a ', 'a ' = 'a'; 'a' = 'a' 'a' = 'a ' 'a ' = 'a' 1 1 1 select 'a\0' = 'a', 'a\0' < 'a', 'a\0' > 'a'; 'a\0' = 'a' 'a\0' < 'a' 'a\0' > 'a' 0 1 0 select 'a' = 'a\0', 'a' < 'a\0', 'a' > 'a\0'; 'a' = 'a\0' 'a' < 'a\0' 'a' > 'a\0' 0 0 1 select 'a\0' = 'a ', 'a\0' < 'a ', 'a\0' > 'a '; 'a\0' = 'a ' 'a\0' < 'a ' 'a\0' > 'a ' 0 1 0 select 'a ' = 'a\0', 'a ' < 'a\0', 'a ' > 'a\0'; 'a ' = 'a\0' 'a ' < 'a\0' 'a ' > 'a\0' 0 0 1 select 'a a' > 'a', 'a \0' < 'a'; 'a a' > 'a' 'a \0' < 'a' 1 1 select binary 'a a' > 'a', binary 'a \0' > 'a', binary 'a\0' > 'a'; binary 'a a' > 'a' binary 'a \0' > 'a' binary 'a\0' > 'a' 1 1 1 create table t1 (text1 varchar(32) not NULL, KEY key1 (text1)); insert into t1 values ('teststring'), ('nothing'), ('teststring\t'); check table t1; Table Op Msg_type Msg_text test.t1 check status OK select * from t1 ignore key (key1) where text1='teststring' or text1 like 'teststring_%' ORDER BY text1; text1 teststring teststring select * from t1 where text1='teststring' or text1 like 'teststring_%'; text1 teststring teststring select * from t1 where text1='teststring' or text1 > 'teststring\t'; text1 teststring select * from t1 order by text1; text1 nothing teststring teststring explain select * from t1 order by text1; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 index NULL key1 34 NULL 3 Using index alter table t1 modify text1 char(32) binary not null; check table t1; Table Op Msg_type Msg_text test.t1 check status OK select * from t1 ignore key (key1) where text1='teststring' or text1 like 'teststring_%' ORDER BY text1; text1 teststring teststring select concat('|', text1, '|') as c from t1 where text1='teststring' or text1 like 'teststring_%' order by c; c |teststring | |teststring| select concat('|', text1, '|') from t1 where text1='teststring' or text1 > 'teststring\t'; concat('|', text1, '|') |teststring| select text1, length(text1) from t1 order by text1; text1 length(text1) nothing 7 teststring 11 teststring 10 select text1, length(text1) from t1 order by binary text1; text1 length(text1) nothing 7 teststring 10 teststring 11 alter table t1 modify text1 blob not null, drop key key1, add key key1 (text1(20)); insert into t1 values ('teststring '); select concat('|', text1, '|') from t1 order by text1; concat('|', text1, '|') |nothing| |teststring| |teststring | |teststring | select concat('|', text1, '|') from t1 where text1='teststring' or text1 > 'teststring\t'; concat('|', text1, '|') |teststring| |teststring | select concat('|', text1, '|') from t1 where text1='teststring'; concat('|', text1, '|') |teststring| select concat('|', text1, '|') from t1 where text1='teststring '; concat('|', text1, '|') |teststring | alter table t1 modify text1 text not null, pack_keys=1; select concat('|', text1, '|') from t1 where text1='teststring'; concat('|', text1, '|') |teststring| |teststring | select concat('|', text1, '|') from t1 where text1='teststring '; concat('|', text1, '|') |teststring| |teststring | explain select concat('|', text1, '|') from t1 where text1='teststring '; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ref key1 key1 22 const 2 Using where select concat('|', text1, '|') from t1 where text1 like 'teststring_%'; concat('|', text1, '|') |teststring | |teststring | select concat('|', text1, '|') as c from t1 where text1='teststring' or text1 like 'teststring_%' order by c; c |teststring | |teststring | |teststring| select concat('|', text1, '|') from t1 where text1='teststring' or text1 > 'teststring\t'; concat('|', text1, '|') |teststring| |teststring | select concat('|', text1, '|') from t1 order by text1; concat('|', text1, '|') |nothing| |teststring | |teststring| |teststring | drop table t1; create table t1 (text1 varchar(32) not NULL, KEY key1 (text1)) pack_keys=0; insert into t1 values ('teststring'), ('nothing'), ('teststring\t'); select concat('|', text1, '|') as c from t1 where text1='teststring' or text1 like 'teststring_%' order by c; c |teststring | |teststring| select concat('|', text1, '|') from t1 where text1='teststring' or text1 >= 'teststring\t'; concat('|', text1, '|') |teststring | |teststring| drop table t1; create table t1 (text1 varchar(32) not NULL, KEY key1 using BTREE (text1)) engine=heap; insert into t1 values ('teststring'), ('nothing'), ('teststring\t'); select * from t1 ignore key (key1) where text1='teststring' or text1 like 'teststring_%' ORDER BY text1; text1 teststring teststring select * from t1 where text1='teststring' or text1 like 'teststring_%'; text1 teststring teststring select * from t1 where text1='teststring' or text1 >= 'teststring\t'; text1 teststring teststring select * from t1 order by text1; text1 nothing teststring teststring explain select * from t1 order by text1; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 3 Using filesort alter table t1 modify text1 char(32) binary not null; select * from t1 order by text1; text1 nothing teststring teststring drop table t1; create table t1 (text1 varchar(32) not NULL, KEY key1 (text1)) engine=innodb; insert into t1 values ('teststring'), ('nothing'), ('teststring\t'); check table t1; Table Op Msg_type Msg_text test.t1 check status OK select * from t1 where text1='teststring' or text1 like 'teststring_%'; text1 teststring teststring select * from t1 where text1='teststring' or text1 > 'teststring\t'; text1 teststring select * from t1 order by text1; text1 nothing teststring teststring explain select * from t1 order by text1; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 index NULL key1 34 NULL 3 Using index alter table t1 modify text1 char(32) binary not null; select * from t1 order by text1; text1 nothing teststring teststring alter table t1 modify text1 blob not null, drop key key1, add key key1 (text1(20)); insert into t1 values ('teststring '); select concat('|', text1, '|') from t1 order by text1; concat('|', text1, '|') |nothing| |teststring| |teststring | |teststring | alter table t1 modify text1 text not null, pack_keys=1; select * from t1 where text1 like 'teststring_%'; text1 teststring teststring select text1, length(text1) from t1 where text1='teststring' or text1 like 'teststring_%'; text1 length(text1) teststring 11 teststring 10 teststring 11 select text1, length(text1) from t1 where text1='teststring' or text1 >= 'teststring\t'; text1 length(text1) teststring 11 teststring 10 teststring 11 select concat('|', text1, '|') from t1 order by text1; concat('|', text1, '|') |nothing| |teststring | |teststring| |teststring | drop table t1;