2014-10-07 2 views
0

ID를 가져 오는 저장 프로 시저가 있습니다. 그것은 CONCAT저장 프로 시저에서 CONCAT 및 LIKE와 관련된 MySQL 구문 문제

그것은 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; 
에게 제공해야합니다, 감기 "스톤 콜드"와 같은 이름을 가진 성이고 내가 위해서 var_dump 경우가

문자열 (13) 스톤을 제공 통과 _fullname과 비교

내가 MySQL에서 동일한 쿼리를 시도하면 완벽하게 작동하지만 절차에서 작동하지 않습니다. 문제는 저장 프로 시저의 구문이라고 확신합니다.

+3

먼저, 정확하게 질문에 태그 (MySQL의 또는 SQL Server?). 둘째, 큰 따옴표를 사용하여 문자열 상수에서 작은 따옴표를 이스케이프합니다. –

+0

@GordonLinoff 답장을 위해 Thnx하지만 여전히 작동하지 않습니다 !!! 정교하게 제발 수 있습니다. –

답변

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

관련 문제