我已经将一个存储过程从Server迁移到Mysql,我用phpmyadmin例程创建了它,语法没有问题,但是当我执行存储过程时,不返回任何值。
DROP PROCEDURE `sp_buscar`; CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_buscar`(IN `@buscar` VARCHAR(50) CHARSET utf8) NOT DETERMINISTIC NO SQL SQL SECURITY DEFINER
SELECT idColono AS Folio, nombreColono as Nombre, CONCAT(apellidoP ,' ', apellidoM) as Apellido, CONCAT(domicilio,' ', numero) as Dirección, numeroTel AS Telefono
FROM cColonos
WHERE domicilio LIKE CONCAT (@buscar, '%')在Server中,它的工作没有问题。
CREATE PROC sp_buscar
@buscar VARCHAR(50)
AS
SELECT idColono AS Folio, nombreColono as Nombre, apellidoP +' '+ apellidoM as Apellido, domicilio+' '+ numero as Dirección, numeroTel AS Telefono
FROM cColonos
WHERE domicilio LIKE @buscar + '%'怎么啦?
发布于 2016-09-24 18:24:04
解决方案!
DROP PROCEDURE `sp_buscar`; CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_buscar`(IN `buscar` VARCHAR(50) CHARSET utf8) NOT DETERMINISTIC NO SQL SQL SECURITY DEFINER
SELECT idColono AS Folio, nombreColono as Nombre,
CONCAT(apellidoP ,' ', apellidoM) as Apellido,
CONCAT(domicilio,' ', numero) as Dirección,
numeroTel AS Telefono
FROM cColonos
WHERE domicilio LIKE CONCAT(buscar, '%')我刚刚从buscar var中删除了@,它可以工作了!
发布于 2016-09-24 17:36:09
尝试删除concat后的空间
SELECT idColono AS Folio, nombreColono as Nombre,
CONCAT(apellidoP ,' ', apellidoM) as Apellido,
CONCAT(domicilio,' ', numero) as Dirección,
numeroTel AS Telefono
FROM cColonos
WHERE domicilio LIKE CONCAT(@buscar, '%');MySQL在函数名后面的空格有一个解析问题。
这个非常不寻常的限制实际上是记录在案。
备注 默认情况下,函数名称和后面的括号之间必须没有空格。这有助于MySQL解析器区分函数调用和对与函数同名的表或列的引用。但是,函数参数周围的空格是允许的。
还有一个允许空间的系统参数。
https://stackoverflow.com/questions/39679120
复制相似问题