Использование аналогичного шаблона в операторе MySQL с двумя разными таблицами - PullRequest
0 голосов
/ 29 марта 2011

У меня есть таблица с именами (names). У меня есть другой, который содержит идентификаторы (user). У меня есть условная конструкция - оператор case-when, который должен вставлять идентификатор в пользовательскую таблицу, если имя в таблице имен соответствует определенному условию.

Я использовал 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//

Это выводит ошибку 1064 на терминале mysql.

Есть ли способ сделать это по-другому?

1 Ответ

1 голос
/ 21 октября 2011

Есть несколько небольших проблем с вашей процедурой.Вам нужно ставить точку с запятой после 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 $$
...