drop table if exists t1; SET @test_character_set= 'gb2312'; SET @test_collation= 'gb2312_chinese_ci'; SET @safe_character_set_server= @@character_set_server; SET @safe_collation_server= @@collation_server; SET @safe_character_set_client= @@character_set_client; SET @safe_character_set_results= @@character_set_results; SET character_set_server= @test_character_set; SET collation_server= @test_collation; CREATE DATABASE d1; USE d1; CREATE TABLE t1 (c CHAR(10), KEY(c)); SHOW FULL COLUMNS FROM t1; Field Type Collation Null Key Default Extra Privileges Comment c char(10) gb2312_chinese_ci YES MUL NULL INSERT INTO t1 VALUES ('aaa'),('aaaa'),('aaaaa'); SELECT c as want3results FROM t1 WHERE c LIKE 'aaa%'; want3results aaa aaaa aaaaa DROP TABLE t1; CREATE TABLE t1 (c1 varchar(15), KEY c1 (c1(2))); SHOW FULL COLUMNS FROM t1; Field Type Collation Null Key Default Extra Privileges Comment c1 varchar(15) gb2312_chinese_ci YES MUL NULL INSERT INTO t1 VALUES ('location'),('loberge'),('lotre'),('boabab'); SELECT c1 as want3results from t1 where c1 like 'l%'; want3results location loberge lotre SELECT c1 as want3results from t1 where c1 like 'lo%'; want3results location loberge lotre SELECT c1 as want1result from t1 where c1 like 'loc%'; want1result location SELECT c1 as want1result from t1 where c1 like 'loca%'; want1result location SELECT c1 as want1result from t1 where c1 like 'locat%'; want1result location SELECT c1 as want1result from t1 where c1 like 'locati%'; want1result location SELECT c1 as want1result from t1 where c1 like 'locatio%'; want1result location SELECT c1 as want1result from t1 where c1 like 'location%'; want1result location DROP TABLE t1; create table t1 (a set('a') not null); insert into t1 values (),(); Warnings: Warning 1364 Field 'a' doesn't have a default value select cast(a as char(1)) from t1; cast(a as char(1)) select a sounds like a from t1; a sounds like a 1 1 select 1 from t1 order by cast(a as char(1)); 1 1 1 drop table t1; set names utf8; create table t1 ( name varchar(10), level smallint unsigned); show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `name` varchar(10) DEFAULT NULL, `level` smallint(5) unsigned DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=gb2312 insert into t1 values ('string',1); select concat(name,space(level)), concat(name, repeat(' ',level)) from t1; concat(name,space(level)) concat(name, repeat(' ',level)) string string drop table t1; DROP DATABASE d1; USE test; SET character_set_server= @safe_character_set_server; SET collation_server= @safe_collation_server; SET character_set_client= @safe_character_set_client; SET character_set_results= @safe_character_set_results; SET NAMES gb2312; SET collation_connection='gb2312_chinese_ci'; create table t1 select repeat('a',4000) a; delete from t1; insert into t1 values ('a'), ('a '), ('a\t'); select collation(a),hex(a) from t1 order by a; collation(a) hex(a) gb2312_chinese_ci 6109 gb2312_chinese_ci 61 gb2312_chinese_ci 6120 drop table t1; create table t1 engine=innodb select repeat('a',50) as c1; alter table t1 add index(c1(5)); insert into t1 values ('abcdefg'),('abcde100'),('abcde110'),('abcde111'); select collation(c1) from t1 limit 1; collation(c1) gb2312_chinese_ci select c1 from t1 where c1 like 'abcdef%' order by c1; c1 abcdefg select c1 from t1 where c1 like 'abcde1%' order by c1; c1 abcde100 abcde110 abcde111 select c1 from t1 where c1 like 'abcde11%' order by c1; c1 abcde110 abcde111 select c1 from t1 where c1 like 'abcde111%' order by c1; c1 abcde111 drop table t1; select @@collation_connection; @@collation_connection gb2312_chinese_ci create table t1 ROW_FORMAT=DYNAMIC select repeat('a',50) as c1 ; insert into t1 values('abcdef'); insert into t1 values('_bcdef'); insert into t1 values('a_cdef'); insert into t1 values('ab_def'); insert into t1 values('abc_ef'); insert into t1 values('abcd_f'); insert into t1 values('abcde_'); select c1 as c1u from t1 where c1 like 'ab\_def'; c1u ab_def select c1 as c2h from t1 where c1 like 'ab#_def' escape '#'; c2h ab_def drop table t1; CREATE TABLE t1 AS SELECT 10 AS a, REPEAT('a',20) AS b, REPEAT('a',8) AS c, REPEAT('a',8) AS d; ALTER TABLE t1 ADD PRIMARY KEY(a), ADD KEY(b); INSERT INTO t1 (a, b) VALUES (1, repeat(0xF1F2,5)); INSERT INTO t1 (a, b) VALUES (2, repeat(0xF1F2,10)); INSERT INTO t1 (a, b) VALUES (3, repeat(0xF1F2,11)); INSERT INTO t1 (a, b) VALUES (4, repeat(0xF1F2,12)); SELECT hex(concat(repeat(0xF1F2, 10), '%')); hex(concat(repeat(0xF1F2, 10), '%')) F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F225 3 rows expected SELECT a, hex(b), c FROM t1 WHERE b LIKE concat(repeat(0xF1F2,10), '%'); a hex(b) c 2 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2 3 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2 4 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2 DROP TABLE t1; SET collation_connection='gb2312_bin'; create table t1 select repeat('a',4000) a; delete from t1; insert into t1 values ('a'), ('a '), ('a\t'); select collation(a),hex(a) from t1 order by a; collation(a) hex(a) gb2312_bin 6109 gb2312_bin 61 gb2312_bin 6120 drop table t1; create table t1 engine=innodb select repeat('a',50) as c1; alter table t1 add index(c1(5)); insert into t1 values ('abcdefg'),('abcde100'),('abcde110'),('abcde111'); select collation(c1) from t1 limit 1; collation(c1) gb2312_bin select c1 from t1 where c1 like 'abcdef%' order by c1; c1 abcdefg select c1 from t1 where c1 like 'abcde1%' order by c1; c1 abcde100 abcde110 abcde111 select c1 from t1 where c1 like 'abcde11%' order by c1; c1 abcde110 abcde111 select c1 from t1 where c1 like 'abcde111%' order by c1; c1 abcde111 drop table t1; select @@collation_connection; @@collation_connection gb2312_bin create table t1 ROW_FORMAT=DYNAMIC select repeat('a',50) as c1 ; insert into t1 values('abcdef'); insert into t1 values('_bcdef'); insert into t1 values('a_cdef'); insert into t1 values('ab_def'); insert into t1 values('abc_ef'); insert into t1 values('abcd_f'); insert into t1 values('abcde_'); select c1 as c1u from t1 where c1 like 'ab\_def'; c1u ab_def select c1 as c2h from t1 where c1 like 'ab#_def' escape '#'; c2h ab_def drop table t1; CREATE TABLE t1 AS SELECT 10 AS a, REPEAT('a',20) AS b, REPEAT('a',8) AS c, REPEAT('a',8) AS d; ALTER TABLE t1 ADD PRIMARY KEY(a), ADD KEY(b); INSERT INTO t1 (a, b) VALUES (1, repeat(0xF1F2,5)); INSERT INTO t1 (a, b) VALUES (2, repeat(0xF1F2,10)); INSERT INTO t1 (a, b) VALUES (3, repeat(0xF1F2,11)); INSERT INTO t1 (a, b) VALUES (4, repeat(0xF1F2,12)); SELECT hex(concat(repeat(0xF1F2, 10), '%')); hex(concat(repeat(0xF1F2, 10), '%')) F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F225 3 rows expected SELECT a, hex(b), c FROM t1 WHERE b LIKE concat(repeat(0xF1F2,10), '%'); a hex(b) c 2 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2 3 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2 4 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2 DROP TABLE t1; SET NAMES gb2312; CREATE TABLE t1 (a text) character set gb2312; INSERT INTO t1 VALUES (0xA2A1),(0xD7FE); SELECT hex(a) FROM t1 ORDER BY a; hex(a) A2A1 D7FE DROP TABLE t1; # # Start of 5.5 tests # # # Testing WL#4583 Case conversion in Asian character sets # SET NAMES utf8; SET collation_connection=gb2312_chinese_ci; CREATE TABLE t1 (b VARCHAR(2)); INSERT INTO t1 VALUES ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7'); INSERT INTO t1 VALUES ('8'),('9'),('A'),('B'),('C'),('D'),('E'),('F'); CREATE TEMPORARY TABLE head AS SELECT concat(b1.b, b2.b) AS head FROM t1 b1, t1 b2; CREATE TEMPORARY TABLE tail AS SELECT concat(b1.b, b2.b) AS tail FROM t1 b1, t1 b2; DROP TABLE t1; CREATE TABLE t1 AS SELECT concat(head, tail) AS code, ' ' AS a FROM head, tail WHERE (head BETWEEN '80' AND 'FF') AND (tail BETWEEN '20' AND 'FF') ORDER BY head, tail; DROP TEMPORARY TABLE head, tail; SHOW CREATE TABLE t1; Table Create Table t1 CREATE TABLE `t1` ( `code` varchar(8) DEFAULT NULL, `a` varchar(1) CHARACTER SET gb2312 NOT NULL DEFAULT '' ) ENGINE=MyISAM DEFAULT CHARSET=latin1 UPDATE t1 SET a=unhex(code) ORDER BY code; Warnings: Warning 1366 Incorrect string value: '\x80 ' for column 'a' at row 1 Warning 1366 Incorrect string value: '\x80!' for column 'a' at row 2 Warning 1366 Incorrect string value: '\x80"' for column 'a' at row 3 Warning 1366 Incorrect string value: '\x80#' for column 'a' at row 4 Warning 1366 Incorrect string value: '\x80$' for column 'a' at row 5 Warning 1366 Incorrect string value: '\x80%' for column 'a' at row 6 Warning 1366 Incorrect string value: '\x80&' for column 'a' at row 7 Warning 1366 Incorrect string value: '\x80'' for column 'a' at row 8 Warning 1366 Incorrect string value: '\x80(' for column 'a' at row 9 Warning 1366 Incorrect string value: '\x80)' for column 'a' at row 10 Warning 1366 Incorrect string value: '\x80*' for column 'a' at row 11 Warning 1366 Incorrect string value: '\x80+' for column 'a' at row 12 Warning 1366 Incorrect string value: '\x80,' for column 'a' at row 13 Warning 1366 Incorrect string value: '\x80-' for column 'a' at row 14 Warning 1366 Incorrect string value: '\x80.' for column 'a' at row 15 Warning 1366 Incorrect string value: '\x80/' for column 'a' at row 16 Warning 1366 Incorrect string value: '\x800' for column 'a' at row 17 Warning 1366 Incorrect string value: '\x801' for column 'a' at row 18 Warning 1366 Incorrect string value: '\x802' for column 'a' at row 19 Warning 1366 Incorrect string value: '\x803' for column 'a' at row 20 Warning 1366 Incorrect string value: '\x804' for column 'a' at row 21 Warning 1366 Incorrect string value: '\x805' for column 'a' at row 22 Warning 1366 Incorrect string value: '\x806' for column 'a' at row 23 Warning 1366 Incorrect string value: '\x807' for column 'a' at row 24 Warning 1366 Incorrect string value: '\x808' for column 'a' at row 25 Warning 1366 Incorrect string value: '\x809' for column 'a' at row 26 Warning 1366 Incorrect string value: '\x80:' for column 'a' at row 27 Warning 1366 Incorrect string value: '\x80;' for column 'a' at row 28 Warning 1366 Incorrect string value: '\x80<' for column 'a' at row 29 Warning 1366 Incorrect string value: '\x80=' for column 'a' at row 30 Warning 1366 Incorrect string value: '\x80>' for column 'a' at row 31 Warning 1366 Incorrect string value: '\x80?' for column 'a' at row 32 Warning 1366 Incorrect string value: '\x80@' for column 'a' at row 33 Warning 1366 Incorrect string value: '\x80A' for column 'a' at row 34 Warning 1366 Incorrect string value: '\x80B' for column 'a' at row 35 Warning 1366 Incorrect string value: '\x80C' for column 'a' at row 36 Warning 1366 Incorrect string value: '\x80D' for column 'a' at row 37 Warning 1366 Incorrect string value: '\x80E' for column 'a' at row 38 Warning 1366 Incorrect string value: '\x80F' for column 'a' at row 39 Warning 1366 Incorrect string value: '\x80G' for column 'a' at row 40 Warning 1366 Incorrect string value: '\x80H' for column 'a' at row 41 Warning 1366 Incorrect string value: '\x80I' for column 'a' at row 42 Warning 1366 Incorrect string value: '\x80J' for column 'a' at row 43 Warning 1366 Incorrect string value: '\x80K' for column 'a' at row 44 Warning 1366 Incorrect string value: '\x80L' for column 'a' at row 45 Warning 1366 Incorrect string value: '\x80M' for column 'a' at row 46 Warning 1366 Incorrect string value: '\x80N' for column 'a' at row 47 Warning 1366 Incorrect string value: '\x80O' for column 'a' at row 48 Warning 1366 Incorrect string value: '\x80P' for column 'a' at row 49 Warning 1366 Incorrect string value: '\x80Q' for column 'a' at row 50 Warning 1366 Incorrect string value: '\x80R' for column 'a' at row 51 Warning 1366 Incorrect string value: '\x80S' for column 'a' at row 52 Warning 1366 Incorrect string value: '\x80T' for column 'a' at row 53 Warning 1366 Incorrect string value: '\x80U' for column 'a' at row 54 Warning 1366 Incorrect string value: '\x80V' for column 'a' at row 55 Warning 1366 Incorrect string value: '\x80W' for column 'a' at row 56 Warning 1366 Incorrect string value: '\x80X' for column 'a' at row 57 Warning 1366 Incorrect string value: '\x80Y' for column 'a' at row 58 Warning 1366 Incorrect string value: '\x80Z' for column 'a' at row 59 Warning 1366 Incorrect string value: '\x80[' for column 'a' at row 60 Warning 1366 Incorrect string value: '\x80\' for column 'a' at row 61 Warning 1366 Incorrect string value: '\x80]' for column 'a' at row 62 Warning 1366 Incorrect string value: '\x80^' for column 'a' at row 63 Warning 1366 Incorrect string value: '\x80_' for column 'a' at row 64 SELECT COUNT(*) FROM t1 WHERE a<>''; COUNT(*) 8178 SELECT code, hex(upper(a)), hex(lower(a)),a, upper(a), lower(a) FROM t1 WHERE hex(a)<>hex(upper(a)) OR hex(a)<>hex(lower(a)); code hex(upper(a)) hex(lower(a)) a upper(a) lower(a) A3C1 A3C1 A3E1 A A a A3C2 A3C2 A3E2 B B b A3C3 A3C3 A3E3 C C c A3C4 A3C4 A3E4 D D d A3C5 A3C5 A3E5 E E e A3C6 A3C6 A3E6 F F f A3C7 A3C7 A3E7 G G g A3C8 A3C8 A3E8 H H h A3C9 A3C9 A3E9 I I i A3CA A3CA A3EA J J j A3CB A3CB A3EB K K k A3CC A3CC A3EC L L l A3CD A3CD A3ED M M m A3CE A3CE A3EE N N n A3CF A3CF A3EF O O o A3D0 A3D0 A3F0 P P p A3D1 A3D1 A3F1 Q Q q A3D2 A3D2 A3F2 R R r A3D3 A3D3 A3F3 S S s A3D4 A3D4 A3F4 T T t A3D5 A3D5 A3F5 U U u A3D6 A3D6 A3F6 V V v A3D7 A3D7 A3F7 W W w A3D8 A3D8 A3F8 X X x A3D9 A3D9 A3F9 Y Y y A3DA A3DA A3FA Z Z z A3E1 A3C1 A3E1 a A a A3E2 A3C2 A3E2 b B b A3E3 A3C3 A3E3 c C c A3E4 A3C4 A3E4 d D d A3E5 A3C5 A3E5 e E e A3E6 A3C6 A3E6 f F f A3E7 A3C7 A3E7 g G g A3E8 A3C8 A3E8 h H h A3E9 A3C9 A3E9 i I i A3EA A3CA A3EA j J j A3EB A3CB A3EB k K k A3EC A3CC A3EC l L l A3ED A3CD A3ED m M m A3EE A3CE A3EE n N n A3EF A3CF A3EF o O o A3F0 A3D0 A3F0 p P p A3F1 A3D1 A3F1 q Q q A3F2 A3D2 A3F2 r R r A3F3 A3D3 A3F3 s S s A3F4 A3D4 A3F4 t T t A3F5 A3D5 A3F5 u U u A3F6 A3D6 A3F6 v V v A3F7 A3D7 A3F7 w W w A3F8 A3D8 A3F8 x X x A3F9 A3D9 A3F9 y Y y A3FA A3DA A3FA z Z z A6A1 A6A1 A6C1 Α Α α A6A2 A6A2 A6C2 Β Β β A6A3 A6A3 A6C3 Γ Γ γ A6A4 A6A4 A6C4 Δ Δ δ A6A5 A6A5 A6C5 Ε Ε ε A6A6 A6A6 A6C6 Ζ Ζ ζ A6A7 A6A7 A6C7 Η Η η A6A8 A6A8 A6C8 Θ Θ θ A6A9 A6A9 A6C9 Ι Ι ι A6AA A6AA A6CA Κ Κ κ A6AB A6AB A6CB Λ Λ λ A6AC A6AC A6CC Μ Μ μ A6AD A6AD A6CD Ν Ν ν A6AE A6AE A6CE Ξ Ξ ξ A6AF A6AF A6CF Ο Ο ο A6B0 A6B0 A6D0 Π Π π A6B1 A6B1 A6D1 Ρ Ρ ρ A6B2 A6B2 A6D2 Σ Σ σ A6B3 A6B3 A6D3 Τ Τ τ A6B4 A6B4 A6D4 Υ Υ υ A6B5 A6B5 A6D5 Φ Φ φ A6B6 A6B6 A6D6 Χ Χ χ A6B7 A6B7 A6D7 Ψ Ψ ψ A6B8 A6B8 A6D8 Ω Ω ω A6C1 A6A1 A6C1 α Α α A6C2 A6A2 A6C2 β Β β A6C3 A6A3 A6C3 γ Γ γ A6C4 A6A4 A6C4 δ Δ δ A6C5 A6A5 A6C5 ε Ε ε A6C6 A6A6 A6C6 ζ Ζ ζ A6C7 A6A7 A6C7 η Η η A6C8 A6A8 A6C8 θ Θ θ A6C9 A6A9 A6C9 ι Ι ι A6CA A6AA A6CA κ Κ κ A6CB A6AB A6CB λ Λ λ A6CC A6AC A6CC μ Μ μ A6CD A6AD A6CD ν Ν ν A6CE A6AE A6CE ξ Ξ ξ A6CF A6AF A6CF ο Ο ο A6D0 A6B0 A6D0 π Π π A6D1 A6B1 A6D1 ρ Ρ ρ A6D2 A6B2 A6D2 σ Σ σ A6D3 A6B3 A6D3 τ Τ τ A6D4 A6B4 A6D4 υ Υ υ A6D5 A6B5 A6D5 φ Φ φ A6D6 A6B6 A6D6 χ Χ χ A6D7 A6B7 A6D7 ψ Ψ ψ A6D8 A6B8 A6D8 ω Ω ω A7A1 A7A1 A7D1 А А а A7A2 A7A2 A7D2 Б Б б A7A3 A7A3 A7D3 В В в A7A4 A7A4 A7D4 Г Г г A7A5 A7A5 A7D5 Д Д д A7A6 A7A6 A7D6 Е Е е A7A7 A7A7 A7D7 Ё Ё ё A7A8 A7A8 A7D8 Ж Ж ж A7A9 A7A9 A7D9 З З з A7AA A7AA A7DA И И и A7AB A7AB A7DB Й Й й A7AC A7AC A7DC К К к A7AD A7AD A7DD Л Л л A7AE A7AE A7DE М М м A7AF A7AF A7DF Н Н н A7B0 A7B0 A7E0 О О о A7B1 A7B1 A7E1 П П п A7B2 A7B2 A7E2 Р Р р A7B3 A7B3 A7E3 С С с A7B4 A7B4 A7E4 Т Т т A7B5 A7B5 A7E5 У У у A7B6 A7B6 A7E6 Ф Ф ф A7B7 A7B7 A7E7 Х Х х A7B8 A7B8 A7E8 Ц Ц ц A7B9 A7B9 A7E9 Ч Ч ч A7BA A7BA A7EA Ш Ш ш A7BB A7BB A7EB Щ Щ щ A7BC A7BC A7EC Ъ Ъ ъ A7BD A7BD A7ED Ы Ы ы A7BE A7BE A7EE Ь Ь ь A7BF A7BF A7EF Э Э э A7C0 A7C0 A7F0 Ю Ю ю A7C1 A7C1 A7F1 Я Я я A7D1 A7A1 A7D1 а А а A7D2 A7A2 A7D2 б Б б A7D3 A7A3 A7D3 в В в A7D4 A7A4 A7D4 г Г г A7D5 A7A5 A7D5 д Д д A7D6 A7A6 A7D6 е Е е A7D7 A7A7 A7D7 ё Ё ё A7D8 A7A8 A7D8 ж Ж ж A7D9 A7A9 A7D9 з З з A7DA A7AA A7DA и И и A7DB A7AB A7DB й Й й A7DC A7AC A7DC к К к A7DD A7AD A7DD л Л л A7DE A7AE A7DE м М м A7DF A7AF A7DF н Н н A7E0 A7B0 A7E0 о О о A7E1 A7B1 A7E1 п П п A7E2 A7B2 A7E2 р Р р A7E3 A7B3 A7E3 с С с A7E4 A7B4 A7E4 т Т т A7E5 A7B5 A7E5 у У у A7E6 A7B6 A7E6 ф Ф ф A7E7 A7B7 A7E7 х Х х A7E8 A7B8 A7E8 ц Ц ц A7E9 A7B9 A7E9 ч Ч ч A7EA A7BA A7EA ш Ш ш A7EB A7BB A7EB щ Щ щ A7EC A7BC A7EC ъ Ъ ъ A7ED A7BD A7ED ы Ы ы A7EE A7BE A7EE ь Ь ь A7EF A7BF A7EF э Э э A7F0 A7C0 A7F0 ю Ю ю A7F1 A7C1 A7F1 я Я я SELECT * FROM t1 WHERE HEX(CAST(LOWER(a) AS CHAR CHARACTER SET utf8)) <> HEX(LOWER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code; code a A2F1 Ⅰ A2F2 Ⅱ A2F3 Ⅲ A2F4 Ⅳ A2F5 Ⅴ A2F6 Ⅵ A2F7 Ⅶ A2F8 Ⅷ A2F9 Ⅸ A2FA Ⅹ A2FB Ⅺ A2FC Ⅻ SELECT * FROM t1 WHERE HEX(CAST(UPPER(a) AS CHAR CHARACTER SET utf8)) <> HEX(UPPER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code; code a A8A1 ā A8A2 á A8A3 ǎ A8A4 à A8A5 ē A8A6 é A8A7 ě A8A8 è A8A9 ī A8AA í A8AB ǐ A8AC ì A8AD ō A8AE ó A8AF ǒ A8B0 ò A8B1 ū A8B2 ú A8B3 ǔ A8B4 ù A8B5 ǖ A8B6 ǘ A8B7 ǚ A8B8 ǜ A8B9 ü A8BA ê DROP TABLE t1; # # End of 5.5 tests #