# # Test of like # --disable_warnings drop table if exists t1; --enable_warnings create table t1 (a varchar(10), key(a)); insert into t1 values ("a"),("abc"),("abcd"),("hello"),("test"); explain extended select * from t1 where a like 'abc%'; explain extended select * from t1 where a like concat('abc','%'); select * from t1 where a like "abc%"; select * from t1 where a like concat("abc","%"); select * from t1 where a like "ABC%"; select * from t1 where a like "test%"; select * from t1 where a like "te_t"; # # The following will test the Turbo Boyer-Moore code # select * from t1 where a like "%a%"; select * from t1 where a like "%abcd%"; select * from t1 where a like "%abc\d%"; drop table t1; create table t1 (a varchar(10), key(a)); # # Bug #2231 # insert into t1 values ('a'), ('a\\b'); select * from t1 where a like 'a\\%' escape '#'; select * from t1 where a like 'a\\%' escape '#' and a like 'a\\\\b'; # # Bug #4200: Prepared statement parameter as argument to ESCAPE # prepare stmt1 from 'select * from t1 where a like \'a\\%\' escape ?'; set @esc='#'; execute stmt1 using @esc; deallocate prepare stmt1; drop table t1; # # Bug #2885: like and datetime # create table t1 (a datetime); insert into t1 values ('2004-03-11 12:00:21'); select * from t1 where a like '2004-03-11 12:00:21'; drop table t1; # # Test like with non-default character set # SET NAMES koi8r; CREATE TABLE t1 (a VARCHAR(10) CHARACTER SET koi8r); INSERT INTO t1 VALUES ('ÆÙ×Á'),('æÙ×Á'),('Æù×Á'),('ÆÙ÷Á'),('ÆÙ×á'),('æù÷á'); INSERT INTO t1 VALUES ('ÆÙ×ÁÐÒÏÌÄÖ'),('æÙ×ÁÐÒÏÌÄÖ'),('Æù×ÁÐÒÏÌÄÖ'),('ÆÙ÷ÁÐÒÏÌÄÖ'); INSERT INTO t1 VALUES ('ÆÙ×áÐÒÏÌÄÖ'),('ÆÙ×ÁðÒÏÌÄÖ'),('ÆÙ×ÁÐòÏÌÄÖ'),('ÆÙ×ÁÐÒïÌÄÖ'); INSERT INTO t1 VALUES ('ÆÙ×ÁÐÒÏìÄÖ'),('ÆÙ×ÁÐÒÏÌäÖ'),('ÆÙ×ÁÐÒÏÌÄö'),('æù÷áðòïìäö'); SELECT * FROM t1 WHERE a LIKE '%Æù×Á%'; SELECT * FROM t1 WHERE a LIKE '%Æù×%'; SELECT * FROM t1 WHERE a LIKE 'Æù×Á%'; DROP TABLE t1; # Bug #2547 Strange "like" behaviour in tables with default charset=cp1250 # Test like with non-default character set using TurboBM # SET NAMES cp1250; CREATE TABLE t1 (a varchar(250) NOT NULL) DEFAULT CHARACTER SET=cp1250; INSERT INTO t1 VALUES ('Techni Tapes Sp. z o.o.'), ('Pojazdy Szynowe PESA Bydgoszcz SA Holding'), ('AKAPESTER 1 P.P.H.U.'), ('Pojazdy Szynowe PESA Bydgoszcz S A Holding'), ('PPUH PESKA-I Maria Struniarska'); select * from t1 where a like '%PESA%'; select * from t1 where a like '%PESA %'; select * from t1 where a like '%PES%'; select * from t1 where a like '%PESKA%'; select * from t1 where a like '%ESKA%'; DROP TABLE t1; # # LIKE crashed for binary collations in some cases # select _cp866'aaaaaaaaa' like _cp866'%aaaa%' collate cp866_bin; # # Check 8bit escape character # set names koi8r; select 'andre%' like 'andreÊ%' escape 'Ê'; # Check 8bit escape character with charset conversion: # For "a LIKE b ESCAPE c" expressions, # escape character is converted into the operation character set, # which is result of aggregation of character sets of "a" and "b". # "c" itself doesn't take part in aggregation, because its collation # doesn't matter, escape character is always compared binary. # In the example below, escape character is converted from koi8r into cp1251: # select _cp1251'andre%' like convert('andreÊ%' using cp1251) escape 'Ê'; --echo End of 4.1 tests --echo # --echo # Bug #54575: crash when joining tables with unique set column --echo # CREATE TABLE t1(a SET('a') NOT NULL, UNIQUE KEY(a)); CREATE TABLE t2(b INT PRIMARY KEY); INSERT INTO t1 VALUES (); INSERT INTO t2 VALUES (1), (2), (3); SELECT 1 FROM t2 JOIN t1 ON 1 LIKE a GROUP BY a; DROP TABLE t1, t2; --echo # --echo # Bug#59149 valgrind warnings with "like .. escape .." function --echo # --error ER_WRONG_ARGUMENTS SELECT '' LIKE '1' ESCAPE COUNT(1); --echo End of 5.1 tests