mysql - 像存储过程参数一样使用 SQL LIKE 运算符

标签 mysql sql sql-like

我正在尝试在存储过程中使用 LIKE %...% 但我不确定如何在运算符中使用传入变量。例如,我正在这样做:

DELIMITER //
CREATE PROCEDURE GetGameByName(IN gameName varchar(255))
 BEGIN
 SELECT * 
 FROM game
 WHERE gameTitle LIKE '% + gameName + %';
 END //
DELIMITER ;

但是当我这样调用它

CALL GetGameByName('Creed');

它没有返回任何内容(我确实有一个游戏标题为“刺客信条”的游戏

你知道我做错了什么吗?谢谢

最佳答案

由于评论中的问题而更新 - 现在的解决方案是WHERE gameTitle LIKE CONCAT('%',gameName,'%')

=====上一个答案=====

在我看来你好像忘记了引号。您可能应该执行 WHERE gameTitle LIKE '%' + gameName + '%';

,而不是 WHERE gameTitle LIKE '% + gameName + %';

按照您的设置方式,您将错误的通用文本 '%gameTitle%' 输入到查询中,而不是您真正想要的内容,例如:' %信条%'

关于mysql - 像存储过程参数一样使用 SQL LIKE 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29594075/

相关文章:

mysql - 通过 Node MySQL 函数传递变量

mysql - 名为 'not' 的数据库的错误 SQL 语法

MySQL 在其他查询中使用准备语句结果

php - 从 SQL 数组中检索所有数据(类似于给定值)

php - PDO LIKE 查询不返回结果

mysql - MacOS:无法运行 MySQL Workbench

php - 查询问题 - 尝试对讨论中的评论进行分组

c# - 通过C#执行多语句MySql

sql - 负主键

MySQL:这不应该返回更多行吗?