MYSQL存储过程,大小写

时间:2013-07-15 16:21:09

标签: mysql stored-procedures case

我已经查阅了这个页面:http://dev.mysql.com/doc/refman/5.1/en/case.html以及这个页面,但无法让一个简单的程序工作....


更新: 要清除我想要做的事情:我想从表中选择字段id为1,0或者可能是其中任何一行的所有行。这由过程的输入参数指定,该参数取值0,1或2.

所以如果_id = 0我想: 从TABLE中选择*,其中id = 0

如果_id = 1我想要: 从TABLE中选择*,其中id = 1

如果_id = 2,我想要: 从TABLE中选择*,其中id为(0,1)

我希望如果我只是通过下面的简单案例陈述工作,我可以自己完成剩下的工作......


我想做的是:

begin
    select * from TABLE where
        case _id
        when  0 then id=0
        else id = 1
        end as id
end

给出错误“您的SQL语法中有错误”。

我也试过了:

begin
    select * from TABLE where
        case _id
        when  0 then id=0
        else id=1
        end case
end

给出了同样的错误。显然我的语法错误,但我无法弄明白...在哪里可以帮助我吗?

谢谢, 尼古拉斯

2 个答案:

答案 0 :(得分:0)

试试这个:

begin
    select *,
        case _id
        when 0 then 0
        else 1
        end as id
    from table
end

当用作SELECT查询的一部分时,WHEN不是声明,而是control flow function

您也可以将其表达为:

begin
    select *, _id != 0 as id
    from table
end

答案 1 :(得分:0)

构建查询看起来像这样...... mySQL案例与C和Java有不同的语法......

set @input=2;

select * from foo 
 where 
     case when @input =2 then  value in ( 1, 0)  else
       value =  @input end;

live demo with sql fidle