1drop table if exists t1; 2create table t1 (a varchar(10), key(a)); 3insert into t1 values ("a"),("abc"),("abcd"),("hello"),("test"); 4explain extended select * from t1 where a like 'abc%'; 5id select_type table type possible_keys key key_len ref rows filtered Extra 61 SIMPLE t1 range a a 13 NULL 2 100.00 Using where; Using index 7Warnings: 8Note 1003 select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` like 'abc%' 9explain extended select * from t1 where a like concat('abc','%'); 10id select_type table type possible_keys key key_len ref rows filtered Extra 111 SIMPLE t1 range a a 13 NULL 2 100.00 Using where; Using index 12Warnings: 13Note 1003 select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` like <cache>(concat('abc','%')) 14select * from t1 where a like "abc%"; 15a 16abc 17abcd 18select * from t1 where a like concat("abc","%"); 19a 20abc 21abcd 22select * from t1 where a like "ABC%"; 23a 24abc 25abcd 26select * from t1 where a like "test%"; 27a 28test 29select * from t1 where a like "te_t"; 30a 31test 32select * from t1 where a like "%a%"; 33a 34a 35abc 36abcd 37select * from t1 where a like "%abcd%"; 38a 39abcd 40select * from t1 where a like "%abc\d%"; 41a 42abcd 43drop table t1; 44create table t1 (a varchar(10), key(a)); 45insert into t1 values ('a'), ('a\\b'); 46select * from t1 where a like 'a\\%' escape '#'; 47a 48a\b 49select * from t1 where a like 'a\\%' escape '#' and a like 'a\\\\b'; 50a 51a\b 52prepare stmt1 from 'select * from t1 where a like \'a\\%\' escape ?'; 53set @esc='#'; 54execute stmt1 using @esc; 55a 56a\b 57deallocate prepare stmt1; 58drop table t1; 59create table t1 (a datetime); 60insert into t1 values ('2004-03-11 12:00:21'); 61select * from t1 where a like '2004-03-11 12:00:21'; 62a 632004-03-11 12:00:21 64drop table t1; 65SET NAMES koi8r; 66CREATE TABLE t1 (a VARCHAR(10) CHARACTER SET koi8r); 67INSERT INTO t1 VALUES ('����'),('����'),('����'),('����'),('����'),('����'); 68INSERT INTO t1 VALUES ('����������'),('����������'),('����������'),('����������'); 69INSERT INTO t1 VALUES ('����������'),('����������'),('����������'),('����������'); 70INSERT INTO t1 VALUES ('����������'),('����������'),('����������'),('����������'); 71SELECT * FROM t1 WHERE a LIKE '%����%'; 72a 73���� 74���� 75���� 76���� 77���� 78���� 79���������� 80���������� 81���������� 82���������� 83���������� 84���������� 85���������� 86���������� 87���������� 88���������� 89���������� 90���������� 91SELECT * FROM t1 WHERE a LIKE '%���%'; 92a 93���� 94���� 95���� 96���� 97���� 98���� 99���������� 100���������� 101���������� 102���������� 103���������� 104���������� 105���������� 106���������� 107���������� 108���������� 109���������� 110���������� 111SELECT * FROM t1 WHERE a LIKE '����%'; 112a 113���� 114���� 115���� 116���� 117���� 118���� 119���������� 120���������� 121���������� 122���������� 123���������� 124���������� 125���������� 126���������� 127���������� 128���������� 129���������� 130���������� 131DROP TABLE t1; 132SET NAMES cp1250; 133CREATE TABLE t1 (a varchar(250) NOT NULL) DEFAULT CHARACTER SET=cp1250; 134INSERT INTO t1 VALUES 135('Techni Tapes Sp. z o.o.'), 136('Pojazdy Szynowe PESA Bydgoszcz SA Holding'), 137('AKAPESTER 1 P.P.H.U.'), 138('Pojazdy Szynowe PESA Bydgoszcz S A Holding'), 139('PPUH PESKA-I Maria Struniarska'); 140select * from t1 where a like '%PESA%'; 141a 142Pojazdy Szynowe PESA Bydgoszcz SA Holding 143Pojazdy Szynowe PESA Bydgoszcz S A Holding 144select * from t1 where a like '%PESA %'; 145a 146Pojazdy Szynowe PESA Bydgoszcz SA Holding 147Pojazdy Szynowe PESA Bydgoszcz S A Holding 148select * from t1 where a like '%PES%'; 149a 150Techni Tapes Sp. z o.o. 151Pojazdy Szynowe PESA Bydgoszcz SA Holding 152AKAPESTER 1 P.P.H.U. 153Pojazdy Szynowe PESA Bydgoszcz S A Holding 154PPUH PESKA-I Maria Struniarska 155select * from t1 where a like '%PESKA%'; 156a 157PPUH PESKA-I Maria Struniarska 158select * from t1 where a like '%ESKA%'; 159a 160PPUH PESKA-I Maria Struniarska 161DROP TABLE t1; 162select _cp866'aaaaaaaaa' like _cp866'%aaaa%' collate cp866_bin; 163_cp866'aaaaaaaaa' like _cp866'%aaaa%' collate cp866_bin 1641 165set names koi8r; 166select 'andre%' like 'andre�%' escape '�'; 167'andre%' like 'andre�%' escape '�' 1681 169select _cp1251'andre%' like convert('andre�%' using cp1251) escape '�'; 170_cp1251'andre%' like convert('andre�%' using cp1251) escape '�' 1711 172End of 4.1 tests 173# 174# Bug #54575: crash when joining tables with unique set column 175# 176CREATE TABLE t1(a SET('a') NOT NULL, UNIQUE KEY(a)); 177CREATE TABLE t2(b INT PRIMARY KEY); 178INSERT IGNORE INTO t1 VALUES (); 179Warnings: 180Warning 1364 Field 'a' doesn't have a default value 181INSERT INTO t2 VALUES (1), (2), (3); 182SELECT 1 FROM t2 JOIN t1 ON 1 LIKE a GROUP BY a; 1831 184DROP TABLE t1, t2; 185# 186# Bug#59149 valgrind warnings with "like .. escape .." function 187# 188SELECT '' LIKE '1' ESCAPE COUNT(1); 189ERROR HY000: Incorrect arguments to ESCAPE 190End of 5.1 tests 191# 192# Start of 10.0 tests 193# 194# 195# MDEV-5445 Server crashes in Item_func_like::fix_fields on LIKE ExtractValue(..) 196# 197SELECT 'a' LIKE REPEAT('',0); 198'a' LIKE REPEAT('',0) 1990 200SELECT 'a' LIKE EXTRACTVALUE('bar','qux'); 201'a' LIKE EXTRACTVALUE('bar','qux') 2020 203# 204# End of 10.0 tests 205# 206# 207# Start of 10.1 tests 208# 209# 210# MDEV-8257 Erroneous "Impossible where" when mixing decimal comparison and LIKE 211# 212CREATE TABLE t1 (a DECIMAL(8,2)); 213INSERT INTO t1 VALUES (10),(20); 214SELECT * FROM t1 WHERE a=10.0; 215a 21610.00 217SELECT * FROM t1 WHERE a LIKE 10.00; 218a 21910.00 220SELECT * FROM t1 WHERE a=10.0 AND a LIKE 10.00; 221a 22210.00 223EXPLAIN EXTENDED SELECT * FROM t1 WHERE a=10.0 AND a LIKE 10.00; 224id select_type table type possible_keys key key_len ref rows filtered Extra 2251 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where 226Warnings: 227Note 1003 select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` = 10.0 and `test`.`t1`.`a` like 10.00 228DROP TABLE t1; 229# 230# MDEV-8599 "WHERE varchar_field LIKE temporal_const" does not use range optimizer 231# 232CREATE TABLE t1 (a VARCHAR(10) CHARACTER SET latin1, KEY(a)) ENGINE=MyISAM; 233INSERT INTO t1 VALUES ('00:00:00'); 234INSERT INTO t1 VALUES ('00:00:01'); 235INSERT INTO t1 VALUES ('00:00:02'); 236INSERT INTO t1 VALUES ('00:00:03'); 237INSERT INTO t1 VALUES ('00:00:04'); 238INSERT INTO t1 VALUES ('00:00:05'); 239INSERT INTO t1 VALUES ('00:00:06'); 240INSERT INTO t1 VALUES ('00:00:07'); 241EXPLAIN SELECT * FROM t1 WHERE a LIKE '00:00:00'; 242id select_type table type possible_keys key key_len ref rows Extra 2431 SIMPLE t1 range a a 13 NULL 1 Using where; Using index 244EXPLAIN SELECT * FROM t1 WHERE a LIKE TIME'00:00:00'; 245id select_type table type possible_keys key key_len ref rows Extra 2461 SIMPLE t1 range a a 13 NULL 1 Using where; Using index 247SELECT * FROM t1 WHERE a LIKE '00:00:00'; 248a 24900:00:00 250SELECT * FROM t1 WHERE a LIKE TIME'00:00:00'; 251a 25200:00:00 253DROP TABLE t1; 254# 255# End of 10.1 tests 256# 257create view v1 as select 'foo!' like 'foo!!', 'foo!' like 'foo!!' escape '!'; 258show create view v1; 259View Create View character_set_client collation_connection 260v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select 'foo!' like 'foo!!' AS `'foo!' like 'foo!!'`,'foo!' like 'foo!!' escape '!' AS `'foo!' like 'foo!!' escape '!'` koi8r koi8r_general_ci 261select * from v1; 262'foo!' like 'foo!!' 'foo!' like 'foo!!' escape '!' 2630 1 264drop view v1; 265create table t1 (a varchar(100), 266b int default (a like '%f\\_'), 267c int default (a like '%f\\_' escape ''), 268d int default (a like '%f\\_' escape '\\')); 269show create table t1; 270Table Create Table 271t1 CREATE TABLE `t1` ( 272 `a` varchar(100) DEFAULT NULL, 273 `b` int(11) DEFAULT (`a` like '%f\\_'), 274 `c` int(11) DEFAULT (`a` like '%f\\_' escape ''), 275 `d` int(11) DEFAULT (`a` like '%f\\_' escape '\\') 276) ENGINE=MyISAM DEFAULT CHARSET=latin1 277insert t1 (a) values ('1 f_'), ('1 f\\_'); 278set sql_mode=no_backslash_escapes; 279insert t1 (a) values ('2 f_'), ('2 f\_'); 280flush tables; 281insert t1 (a) values ('3 f_'), ('3 f\_'); 282set sql_mode=default; 283select * from t1; 284a b c d 2851 f_ 1 0 1 2861 f\_ 0 1 0 2872 f_ 1 0 1 2882 f\_ 0 1 0 2893 f_ 1 0 1 2903 f\_ 0 1 0 291drop table t1; 292create table t1 (f int); 293insert t1 values (1),(2); 294select 1 from (select distinct * from t1) as x where f < (select 1 like 2 escape (3=1)); 2951 296drop table t1; 297create table t1(f1 int); 298insert into t1 values(1); 299update (select 1 like 2 escape (1 in (select 1 from t1))) x, t1 as d set d.f1 = 1; 300ERROR HY000: Incorrect arguments to ESCAPE 301select * from (select 1 like 2 escape (1 in (select 1 from t1))) x; 3021 like 2 escape (1 in (select 1 from t1)) 3030 304drop table t1; 305create table t1 (f int); 306insert t1 values (1),(2); 307create view v1 as select * from t1 where (1 like 2 escape (3 in (('h', 'b') in (select 'k', 'k' union select 'g', 'j'))) and f >= 0); 308drop view v1; 309drop table t1; 310# 311# MDEV-17359 - Extend expression supported by like (| & << >> || + - * / DIV MOD ^ ) 312# 313SELECT 1 LIKE +1; 3141 LIKE +1 3151 316SELECT -1 LIKE -1; 317-1 LIKE -1 3181 319SELECT 1 LIKE (1); 3201 LIKE (1) 3211 322SELECT 1 LIKE 1|2, 3 LIKE 1|2; 3231 LIKE 1|2 3 LIKE 1|2 3240 1 325SELECT 1 LIKE 3&2, 2 LIKE 3&2; 3261 LIKE 3&2 2 LIKE 3&2 3270 1 328SELECT 1 LIKE 1>>0, 1 LIKE 1>>1 , 64 LIKE 256>>2; 3291 LIKE 1>>0 1 LIKE 1>>1 64 LIKE 256>>2 3301 0 1 331SELECT 1 LIKE 1<<0, 1 LIKE 0<<2, 32 LIKE 1<<5; 3321 LIKE 1<<0 1 LIKE 0<<2 32 LIKE 1<<5 3331 0 1 334SELECT 1 LIKE 1||2, 1 LIKE 0||2; 3351 LIKE 1||2 1 LIKE 0||2 3361 1 337SELECT 2 LIKE 1+1, 2.0 LIKE 1+1.0, 2 LIKE 1+1.0, 1+1 LIKE 2, 1+1 LIKE 0+2; 3382 LIKE 1+1 2.0 LIKE 1+1.0 2 LIKE 1+1.0 1+1 LIKE 2 1+1 LIKE 0+2 3391 1 0 1 1 340SELECT 0 LIKE 1-1, 2.0 LIKE 3-1.0, 2 LIKE 3-1.0, 2-1 LIKE 1, 3-1 LIKE 4-1; 3410 LIKE 1-1 2.0 LIKE 3-1.0 2 LIKE 3-1.0 2-1 LIKE 1 3-1 LIKE 4-1 3421 1 0 1 0 343SELECT 1 LIKE 1*1, 2.0 LIKE 2*1.0, 2 LIKE 2*1.0, 2*1 LIKE 2, 2*3 LIKE 6*1; 3441 LIKE 1*1 2.0 LIKE 2*1.0 2 LIKE 2*1.0 2*1 LIKE 2 2*3 LIKE 6*1 3451 1 0 1 1 346SELECT 1 LIKE 1/1, 1.0000 LIKE 1/1, 1.0000 LIKE 1/1.000000, 1.000000 LIKE 1.0/1.000000, 1/1 like 1/1; 3471 LIKE 1/1 1.0000 LIKE 1/1 1.0000 LIKE 1/1.000000 1.000000 LIKE 1.0/1.000000 1/1 like 1/1 3480 1 1 0 1 349SELECT 1 LIKE 1 DIV 1, 1 LIKE 1.0 DIV 1.0 ; 3501 LIKE 1 DIV 1 1 LIKE 1.0 DIV 1.0 3511 1 352SELECT 2 LIKE 10 MOD 8, 1.9 LIKE 10 MOD 8.1, 1.9 LIKE 10 MOD 8.10 ; 3532 LIKE 10 MOD 8 1.9 LIKE 10 MOD 8.1 1.9 LIKE 10 MOD 8.10 3541 1 0 355SELECT 1 LIKE CAST(1 AS CHAR(10)); 3561 LIKE CAST(1 AS CHAR(10)) 3571 358SELECT 1 LIKE CASE WHEN 1=1 THEN '1' ELSE '0' END; 3591 LIKE CASE WHEN 1=1 THEN '1' ELSE '0' END 3601 361SELECT 1 LIKE COALESCE(1+0, 1); 3621 LIKE COALESCE(1+0, 1) 3631 364CREATE TABLE t1(c1 INTEGER, c2 INTEGER); 365INSERT INTO t1 VALUES(1,1); 366INSERT INTO t1 VALUES(1,2); 367SELECT c1, c2, c1|c2, 1 LIKE c1|c2 FROM t1 ORDER BY c2; 368c1 c2 c1|c2 1 LIKE c1|c2 3691 1 1 1 3701 2 3 0 371SELECT c1, c2, c1&c2, 1 LIKE c1&c2 FROM t1 ORDER BY c2; 372c1 c2 c1&c2 1 LIKE c1&c2 3731 1 1 1 3741 2 0 0 375SELECT c1, c2, c2>>c1, 1 LIKE c2>>c1 FROM t1 ORDER BY c2; 376c1 c2 c2>>c1 1 LIKE c2>>c1 3771 1 0 0 3781 2 1 1 379SELECT c1, c2, c2<<c1, 2 LIKE c2<<c1 FROM t1 ORDER BY c2; 380c1 c2 c2<<c1 2 LIKE c2<<c1 3811 1 2 1 3821 2 4 0 383SELECT c1, c2, c1||c2, 1 LIKE c1||c2 FROM t1 ORDER BY c2; 384c1 c2 c1||c2 1 LIKE c1||c2 3851 1 1 1 3861 2 1 1 387SELECT c1, c2, c1+c2, 2 LIKE c1+c2 FROM t1 ORDER BY c2; 388c1 c2 c1+c2 2 LIKE c1+c2 3891 1 2 1 3901 2 3 0 391SELECT c1, c2, c1-c2, -1 LIKE c1-c2 FROM t1 ORDER BY c2; 392c1 c2 c1-c2 -1 LIKE c1-c2 3931 1 0 0 3941 2 -1 1 395SELECT c1, c2, c1*c2, 2 LIKE c1*c2 FROM t1 ORDER BY c2; 396c1 c2 c1*c2 2 LIKE c1*c2 3971 1 1 0 3981 2 2 1 399SELECT c1, c2, c1/c2, 0.5000 LIKE c1/c2 FROM t1 ORDER BY c2; 400c1 c2 c1/c2 0.5000 LIKE c1/c2 4011 1 1.0000 0 4021 2 0.5000 1 403SELECT c1, c2, c1 DIV c2, 0 LIKE c1 DIV c2 FROM t1 ORDER BY c2; 404c1 c2 c1 DIV c2 0 LIKE c1 DIV c2 4051 1 1 0 4061 2 0 1 407SELECT c1, c2, c1 MOD c2, 0 LIKE c1 MOD c2 FROM t1 ORDER BY c2; 408c1 c2 c1 MOD c2 0 LIKE c1 MOD c2 4091 1 0 1 4101 2 1 0 411CREATE VIEW v1 AS 412SELECT 1 LIKE c1|c2, 1 LIKE c1&c2, 1 LIKE c2>>c1, 2 LIKE c2<<c1, 4131 LIKE c1||c2, 2 LIKE c1+c2, -1 LIKE c1-c2, 2 LIKE c1*c2, 4140.5000 LIKE c1/c2, 0 LIKE c1 DIV c2, 0 LIKE c1 MOD c2 415FROM t1 ORDER BY c2; 416SELECT * FROM v1; 4171 LIKE c1|c2 1 LIKE c1&c2 1 LIKE c2>>c1 2 LIKE c2<<c1 1 LIKE c1||c2 2 LIKE c1+c2 -1 LIKE c1-c2 2 LIKE c1*c2 0.5000 LIKE c1/c2 0 LIKE c1 DIV c2 0 LIKE c1 MOD c2 4181 1 0 1 1 1 0 0 0 0 1 4190 0 1 0 1 0 1 1 1 1 0 420EXPLAIN EXTENDED SELECT * FROM v1; 421id select_type table type possible_keys key key_len ref rows filtered Extra 4221 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using filesort 423Warnings: 424Note 1003 select 1 like `test`.`t1`.`c1` | `test`.`t1`.`c2` AS `1 LIKE c1|c2`,1 like `test`.`t1`.`c1` & `test`.`t1`.`c2` AS `1 LIKE c1&c2`,1 like `test`.`t1`.`c2` >> `test`.`t1`.`c1` AS `1 LIKE c2>>c1`,2 like `test`.`t1`.`c2` << `test`.`t1`.`c1` AS `2 LIKE c2<<c1`,1 like `test`.`t1`.`c1` or `test`.`t1`.`c2` <> 0 AS `1 LIKE c1||c2`,2 like `test`.`t1`.`c1` + `test`.`t1`.`c2` AS `2 LIKE c1+c2`,-1 like `test`.`t1`.`c1` - `test`.`t1`.`c2` AS `-1 LIKE c1-c2`,2 like `test`.`t1`.`c1` * `test`.`t1`.`c2` AS `2 LIKE c1*c2`,0.5000 like `test`.`t1`.`c1` / `test`.`t1`.`c2` AS `0.5000 LIKE c1/c2`,0 like `test`.`t1`.`c1` DIV `test`.`t1`.`c2` AS `0 LIKE c1 DIV c2`,0 like `test`.`t1`.`c1` MOD `test`.`t1`.`c2` AS `0 LIKE c1 MOD c2` from `test`.`t1` order by `test`.`t1`.`c2` 425DROP VIEW v1; 426DROP TABLE t1; 427