无法使用存储过程过滤带有 % mysql 的行

Posted

技术标签:

【中文标题】无法使用存储过程过滤带有 % mysql 的行【英文标题】:Can't filter rows with % mysql using stored procedure 【发布时间】:2015-03-11 00:07:58 【问题描述】:

我的想法是使用 % 和 IN 变量过滤行,我正在调用此过程,但它不会过滤行。例如: 如果用户键入 09,则应出现所有带有 09... 的行。我也尝试过使用 concat 但也无法过滤。如果您能给我任何帮助,我将不胜感激。

这是程序

delimiter //
create procedure p (in cedula1 varchar(10))
begin
    select * from view_pacientes
-- THIS PART IS WRONG BUT I DONT KNOW HOW TO CORRECT IT TO WORK PROPERLY.
    where cedula1+"%" like cedula;

end//

【问题讨论】:

这显然是 mysql,所以我删除了 sql-server 标签。 【参考方案1】:

它认为这是你在 MySQL 中想要的语法:

select *
from view_pacientes
where cedula like concat(cedula1, '%') ;

当你在 MySQL 中定义一个存储过程时,我建议你在你的参数前面加上一些让它们特别的东西。对于“in”和“out”参数,我的偏好是 in_out_

【讨论】:

以上是关于无法使用存储过程过滤带有 % mysql 的行的主要内容,如果未能解决你的问题,请参考以下文章

使用 PDO 调用带有 Out 参数的存储过程

无法执行 MySQL 存储过程

优化数据库有啥更好的方法:使用带有不同过滤器的一堆存储过程,还是使用带有 if 条件的单个存储过程?

无法在 Azure mySQL 中创建函数/存储过程

无法从 mysql 存储过程中看到任何值

mysql 存储过程