【问题标题】:Using like pattern in mysql case statement with two different tables在具有两个不同表的mysql case语句中使用like模式
【发布时间】:2011-07-25 01:31:51
【问题描述】:

我有一张带有名字的表 (names)。我有另一个持有 id (user)。 我有一个条件构造 - 如果名称表中的名称与某个条件匹配,则应该在用户表中插入一个 id 的 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//

这会在 mysql 终端上输出错误 1064。

有没有办法以不同的方式做到这一点?

【问题讨论】:

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


    【解决方案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 $$
    

    【讨论】:

      猜你喜欢
      • 2018-04-30
      • 2020-01-17
      • 1970-01-01
      • 2011-10-08
      • 2021-06-20
      • 1970-01-01
      • 1970-01-01
      • 2017-11-16
      • 2012-12-18
      相关资源
      最近更新 更多