使用存储过程搜索字符串

Use a stored procedure to search for a string

提问人:petworthnick 提问时间:9/4/2022 最后编辑:petworthnick 更新时间:9/4/2022 访问量:433

问:

如何将参数传递到存储过程中并使用它来搜索数据库?

我正在尝试在数据库中搜索包含搜索词的企业名称。

以下 SP 可用于返回所有结果:

BEGIN

SELECT company.businessname
FROM company;

END

返回此结果:

Better Cats Vetinary Practice
Appliance R'Us
The Beautiful Flower Company
Lovely Trips Away

但是,如果我使用像这样传入的“searchtext”参数,并且该参数被赋予“appliance”的值,它应该返回一个结果,但不返回任何内容:

BEGIN

SELECT company.businessname
FROM company
WHERE company.businessname LIKE searchtext;
END

如何让它返回企业名称中带有“appliance”的一个结果?

mysql 存储过程 命名参数

评论

0赞 Jens 9/4/2022
您必须在以下位置使用符号:%'%'+searchtext+'%'
1赞 Bill Karwin 9/4/2022
但是在MySQL中,使用CONCAT()进行字符串连接,而不是(这是Microsoft SQL Server语法)。+
0赞 petworthnick 9/4/2022
@Jens - 这是有道理的,但我现在把它改成了这个,SELECT company.businessname FROM company WHERE company.businessname LIKE '%'+searchtext+'%';它仍然返回零条记录:-(
0赞 Jens 9/4/2022
如果你使用 ?lower(company.businessname)

答:

0赞 petworthnick 9/4/2022 #1

解决这个问题的方法似乎是将命名参数包括 %...例如 searchtext = %appliance%,则 SP 变为:

SELECT company.businessname
FROM company
WHERE company.businessname like searchtext;

然后它返回结果 expect.ed

评论

0赞 Solarflare 9/4/2022
或者你按照 Bill 在评论中向你解释的去做,而不是组合字符串。concat()+