我正在尝试在存储过程中使用 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/