I am trying to setup a few simple SQL scripts to help with some short term DB administration. As such, I\'m setting up variables to try to make it easier to reuse these scri
SET @email = 'test@test.com';
SELECT email from `user` WHERE email LIKE CONCAT('%', @email, '%');
BEGIN
SET @emailid = CONCAT('%', 'email@email.com' ,'%');
SET @t1 =CONCAT('SELECT * FROM user WHERE email LIKE ''', @emailid, '''');
PREPARE stmt3 FROM @t1;
EXECUTE stmt3;
DEALLOCATE PREPARE stmt3;
END
Using same syntax as oracle seems to work:
SELECT email from user WHERE email LIKE '%' || @email || '%';
I resolved using the CONCAT function before using LIKE statement:
SET @email = 'test@test.com';
set @email = CONCAT('%',@email,'%');
SELECT email from `user` WHERE email LIKE @email;
It works fine for me
You may have error
Error Code: 1267. Illegal mix of collations for operation 'like' 0.016 sec
In this case you need to specify the same collation as used for your table like that:
SET @email = 'test@test.com' COLLATE utf8_unicode_ci;
Works without concat():
LIKE '%{$var}%'
(Mysql version 5.+)