gpt4 book ai didi

MySql 存储过程与匹配

转载 作者:行者123 更新时间:2023-11-29 10:27:25 25 4
gpt4 key购买 nike

我有一个非常简单的存储过程,应该从 1 个数据库表中选择一些列,但我收到与“MATCH AGAINST”语法相关的错误。这是我的程序:

DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `searchItem`(IN `Importer` VARCHAR(100), IN `Description` TEXT)
BEGIN
SELECT model, date_of_production, horsepower, importer, description FROM cars WHERE importer = Importer AND MATCH (description) AGAINST(Description) ORDER BY date_of_production ASC;
END$$
DELIMITER ;

这是我的 table 的屏幕截图 enter image description here

当我测试该过程时,它给了我一个错误“#1210 - MATCH 的参数不正确”我已经测试了该过程中的查询并且它有效,所以我猜测问题出在该过程的语法中本身。感谢您提前的帮助!

最佳答案

https://dev.mysql.com/doc/refman/5.7/en/fulltext-search.html说:

The search string must be a string value that is constant during query evaluation. This rules out, for example, a table column because that can differ for each row.

我读到此内容是说您不能使用存储过程参数 Description 作为 AGAINST 的参数。

因此您必须使用 PREPARE/EXECUTE 在过程中执行此操作。

<小时/>

回复@Michael 的评论:

这是一个好点,我没有注意到OP的表有一列的名称与函数参数的名称相同。你是对的,这可能会引起歧义。

确保过程和参数的参数与任何列具有不同的名称始终是一个好主意,以避免这种歧义。

关于MySql 存储过程与匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48045342/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com