2010-03-12 5 views
0

저는 mysql 5.0을 실행 중이며 트리거를 만들었습니다. 대략적으로 다음과 같습니다 :MySql 트리거 - IF 구문의 문자열 비교

SET @temp =(SELECT STATEMENT); 

IF(@temp = 'true') THEN 
    -code block 1- 
ELSE 
    -code block 2- 
END IF; 

select 문을 단독으로 실행하면 'true'가 반환되지만 'code block 2'위의 코드는 실행되고 있습니다. 왜 그런가? 당신의 선택 문은 부울 값을 반환하는 경우

+0

select 문을 포함 할 수 있습니까? 소문자에서 단 하나의 행과 STRING 'true'만 반환합니까? – JohnFx

+0

소문자에서 하나의 행을 true로 반환합니다. + ------------------ + | 임시 | + ------------------ + | 사실 | + ------------------ + – David

+0

아마도 문자 세트 문제가 발생했을 수 있습니다. 트리거의 charset은 UTF8 (IIRC)입니다. 테이블의 charset이 호환되지 않으면 IF가 일치하지 않습니다. – Johan

답변

0

다음이 작동합니다 : 그것은 @temp처럼 보이는

SET @temp =(SELECT STATEMENT); 

IF(@temp = true) THEN 
    -code block 1- 
ELSE 
    -code block 2- 
END IF; 
0

이 '사실'보다 훨씬 더 포함되어 있습니다. 추가 정보가 없으면이 문자열을 다시 써서 문자열을 검색하지 않아야합니다. 그러나 이것은 사용자가 찾고있는 것일 수 있습니다 ('true'가 반환 문자열에있는 경우).

IF (INSTR(@temp, 'true') > 0) THEN 
    -code block 1- 
ELSE 
    -code block 2- 
END IF