2011-03-29 1 views
0

이름이 (names) 인 테이블이 있습니다. 나는 다른 것을 보유하고있다 (user). 조건부 구문 - 이름 테이블의 이름이 특정 조건과 일치하는 경우 사용자 테이블에 ID를 삽입해야하는 case-when 문이 있습니다.두 개의 서로 다른 테이블이있는 mysql case 문에서 like 패턴 사용

나는 문자열 패턴과 일치하는 like %을 사용하고 있습니다 :

delimiter // 
create procedure name_matching (in names.name varchar, out id int) 
begin 
    case 
    when names.name like 's%_%a' then 
     insert into user (id) values ('1'); 
    else 
     insert into user (id) values ('2'); 
    end case 
end// 

이 MySQL의 터미널에 오류 1064를 출력합니다.

다른 방법이 있습니까?

답변

1

절차에 몇 가지 작은 문제가 있습니다. end case 뒤에 세미콜론이 필요하면 입력 매개 변수 목록에 varchar의 필드 크기를 지정해야합니다. 다음은 MySQL 5.1에서 작동합니다 ("작동"의미 : 프로 시저를 만들 때 오류가 발생하지 않음) :

delimiter $$ 
create procedure name_matching (in name varchar(500)) 
begin 
    case 
    when name like 's%_%a' then 
     insert into user (id) values (1); 
    else 
     insert into user (id) values (2); 
    end case; 
end $$ 
관련 문제