我正在尝试设置一些简单的SQL脚本,以帮助进行一些短期的DB管理。因此,我正在设置变量,以使重用这些脚本变得更容易。
我遇到的问题特别是LIKE子句。
SET @email = 'test@test.com';
SELECT email from `user` WHERE email LIKE '%@email%';所以我想让它根据变量中设置的电子邮件来查找结果。如果我在LIKE子句中手动输入电子邮件,查询就会起作用。
如何让LIKE子句与user变量一起工作?
更新:@dems的答案适用于这个简单的情况,但我在处理更复杂的查询时遇到了问题。
SET @email = 'test@test.com';
SELECT project.projectno, project.projectname, login.username,
CONCAT(login.firstname, ' ', login.lastname), projectuser.title
FROM projectuser
INNER JOIN login ON projectuser.uid = login.uid
LEFT JOIN project ON projectuser.pid = project.pid
WHERE login.username LIKE CONCAT ('%', @email, '%')出现错误"FUNCTION mydb.CONCAT me not exist“
查询在没有CONCAT()的情况下工作:
SET @email = 'test@test.com';
SELECT project.projectno, project.projectname, login.username,
CONCAT(login.firstname, ' ', login.lastname), projectuser.title
FROM projectuser
INNER JOIN login ON projectuser.uid = login.uid
LEFT JOIN project ON projectuser.pid = project.pid
WHERE login.username LIKE @email发布于 2011-12-17 01:01:19
SET @email = 'test@test.com';
SELECT email from `user` WHERE email LIKE CONCAT('%', @email, '%');发布于 2015-11-22 21:45:27
在不使用concat()的情况下工作:
LIKE '%{$var}%'(Mysql版本5.+)
发布于 2016-06-09 10:37:51
您可能会有错误
Error Code: 1267. Illegal mix of collations for operation 'like' 0.016 sec在这种情况下,您需要指定与表相同的排序规则,如下所示:
SET @email = 'test@test.com' COLLATE utf8_unicode_ci;https://stackoverflow.com/questions/8537516
复制相似问题