在mysql中创建一个函数

时间:2011-07-09 02:43:43

标签: mysql

我想创建一个我可以在mysql中使用的函数或过程,但我不确定语法是什么。我想要做的是从列中获取值并查看它是1还是2,并根据该值返回A列或B列中的值。 例如,我的s​​elect函数类似于:

select a, b, c, functionA(c) from table;

以下是我的函数的伪代码

functionA(int x){
      if(x==1)
          //return value in column A
      else
          //return value in column B
}

2 个答案:

答案 0 :(得分:1)

select a, b, c, IF(c=1, a, b) from table;

或者您可以使用select case,但我认为IF更具可读性。

http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html

答案 1 :(得分:0)

函数将无法从您未传入的表中返回任何内容。要执行您想要的操作,需要3个参数:

create function functionA(p1 integer, p2 integer, p3 integer) returns integer
begin
    if p1 = 1 then
        return p2
    else
        return p3
    end if;
end;

..您的查询将是:

select a, b, c, functionA(c, a, b) from table;

然而,对于这种简单的查询来说,它更有效,更容易:

select case when c=1 then a else b end from table;