2009-10-02 4 views
0

LABATE를 익숙한 사람이 varialbe 문자열을 전달 했습니까? 저장 프로 시저에 설정된 문자열에 쉼표가 있지만 제대로 작동하지 못하는지 확인하기 위해이 변수를 사용하려고합니다. 내 코드이 코드는 찾아 내가 잘못이 무엇인지 알아낼 수 없습니다 때문에 SELECT의 complie하지 않습니다이저장 프로 시저에서 LOCATE 문자열 함수 사용

DECLARE string VARCHAR(10); 
    DECLARE comma_found INT; 

    SET string = 'hello, world'; 

    SET comma_found = SELECT LOCATE(',',string); 

    IF(comma_found <> 0) THEN 

     ...execute code.... 

    END IF; 

같이 보입니다. 그것은 내 구문인가? 용법? 이 작업을 수행하는 데 사용할 수있는 다른 문자열 maniuplation 함수가 있습니까? MySQL의 저장 프로 시저 내에서이 작업을 수행하고 있습니다.

답변

0

LOCATE의 구문은 LOCATE (substring, string)입니다. 귀하의 질의에 말 그대로 LOCATE (',', string)는 string이 varchar (10) 인 곳입니다. 귀하의 문자열 그래도 = 실제로 P

10 개 이상의 문자 긴
+0

을 그가 당신이 언급 한 바와 같이 truncation 에러를 가질 가능성이 높습니다하지만 구문이 올바른지 -하지만 거기 쉼표가이 방법으로 감지 될 수없는 이유 ... – Basic

2

그래서 나는 새로운 문법을 완전히 익숙하지 않아요하지만 일부 인터넷 검색에서, 나는

SET comma_found = SELECT LOCATE(',',string); 
을 믿고 오랜 시간에 MySQL을 사용하지 않은

SELECT @comma_found 

그것은 것 같다

SELECT @comma_found := LOCATE(',',string); 

은 다음 @comma_found 예를 들어 사용할 수 있어야한다 당신은 여기를 참조하십시오

를 찾습니다 오히려 결과보다 변수에 데이터 세트를 할당하려고하지하고 있다는 : http://dev.mysql.com/doc/refman/5.0/en/user-variables.html

관련 문제