在mysql case语句中使用like pattern与两个不同的表

时间:2011-03-29 07:30:18

标签: mysql sql-like mysql-error-1064 procedures routines

我有一个名字(names)的表格。我有另一个持有ID(user)。 我有一个条件构造 - 一个case-when语句,如果names表中的名称与某个条件匹配,则应该在用户表中插入一个id。

我使用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 个答案:

答案 0 :(得分: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 $$