首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在MySQL LIKE子句中使用用户变量?

如何在MySQL LIKE子句中使用用户变量?
EN

Stack Overflow用户
提问于 2011-12-17 00:59:27
回答 8查看 86.5K关注 0票数 51

我正在尝试设置一些简单的SQL脚本,以帮助进行一些短期的DB管理。因此,我正在设置变量,以使重用这些脚本变得更容易。

我遇到的问题特别是LIKE子句。

代码语言:javascript
复制
SET @email = 'test@test.com';

SELECT email from `user` WHERE email LIKE '%@email%';

所以我想让它根据变量中设置的电子邮件来查找结果。如果我在LIKE子句中手动输入电子邮件,查询就会起作用。

如何让LIKE子句与user变量一起工作?

更新:@dems的答案适用于这个简单的情况,但我在处理更复杂的查询时遇到了问题。

代码语言:javascript
复制
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()的情况下工作:

代码语言:javascript
复制
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
EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2011-12-17 01:01:19

代码语言:javascript
复制
SET @email = 'test@test.com';

SELECT email from `user` WHERE email LIKE CONCAT('%', @email, '%');
票数 107
EN

Stack Overflow用户

发布于 2015-11-22 21:45:27

在不使用concat()的情况下工作:

代码语言:javascript
复制
LIKE '%{$var}%'

(Mysql版本5.+)

票数 4
EN

Stack Overflow用户

发布于 2016-06-09 10:37:51

您可能会有错误

代码语言:javascript
复制
Error Code: 1267. Illegal mix of collations for operation 'like'    0.016 sec

在这种情况下,您需要指定与表相同的排序规则,如下所示:

代码语言:javascript
复制
SET @email = 'test@test.com' COLLATE utf8_unicode_ci;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8537516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档