【问题标题】:MySQL Syntax Issue with CONCAT AND LIKE in Stored Procedure存储过程中 CONCAT AND LIKE 的 MySQL 语法问题
【发布时间】:2014-10-07 14:59:16
【问题描述】:

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

String(13) 冷石

它应该给出一个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 中尝试相同的查询时,它工作得非常好,但在程序中不起作用。我确定问题是存储过程中的语法。

【问题讨论】:

  • 首先,正确标记问题(MySQL 还是 SQL Server?)。二、使用双单引号对字符串常量中的单引号进行转义。
  • @GordonLinoff Thnx 回复但它仍然无法正常工作!!!你能详细说明一下吗?

标签: php mysql sql stored-procedures


【解决方案1】:

试试:

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

【讨论】:

    猜你喜欢
    • 2016-10-28
    • 2020-03-08
    • 2021-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多