存储过程中的CONCAT和LIKE的MySQL语法问题

时间:2014-10-07 14:59:16

标签: php mysql sql stored-procedures

我有一个存储过程来获取id。它的名字是“Stone,Cold”的姓氏,并与传递的_fullname进行比较,当我的var_dump给出时

String(13)Stone,Cold

它应该给出一个id

IF NOT ISNULL(_fullname) THEN
    SET _fullname   = TRIM(_fullname);
    SET clause = CONCAT( clause , ' AND CONCAT(c.lname, ', ', c.fname) LIKE   CONCAT('%',_fullname,'%')');
END IF;

当我在MySQL中尝试相同的查询时,它工作得很好,但在程序中不起作用。我确定问题是存储过程中的语法。

1 个答案:

答案 0 :(得分:0)

尝试:

DELIMITER //

DROP PROCEDURE IF EXISTS `sp_test`//

CREATE PROCEDURE `sp_test`(IN `_fullname` VARCHAR(20))
BEGIN
  DECLARE `clause` VARCHAR(500) DEFAULT '';
  IF NOT ISNULL(`_fullname`) THEN
    SET `_fullname` := TRIM(`_fullname`);
    SET `clause` := CONCAT(`clause`, ' AND CONCAT(`c`.`lname`, '', '', `c`.`fname`) LIKE ''', '%', `_fullname`, '%''');
  END IF;
  SELECT `clause`;
END//

DELIMITER ;

SQL Fiddle demo