ITPub博客

首页 > 数据库 > 数据库开发技术 > 瀚高DB兼容MySQL if函数

瀚高DB兼容MySQL if函数

原创 数据库开发技术 作者:瀚高PG实验室 时间:2021-12-22 16:21:21 0 删除 编辑
环境
系统平台: Linux x86-64 Red Hat Enterprise Linux 7
版本: 4.5
症状
MySQL if函数在瀚高DB当中没有,源应用在用到if函数时,就会报if函数不存在的错误信息。为此,我们需要根据业务需求自定义if函数。
问题原因
瀚高中没有if函数此函数。
解决方案

If 函数说明

在 mysql 中 if() 函数的用法类似于 java 中的三目表达式,其用处也比较多,具体语法如下:

IF (expr1,expr2,expr3),如果expr1的值为true,则返回expr2的值,如果expr1的值为false,则返回expr3的值。

MySQL 中,if 函数使用非常广泛,支持的类型也很多。我们可以自定义if 函数并实现其功能,但并不是能够百分百富县MySQL 的if 函数功能。所以只能根据应用所用场景或者功能定制写if 函数。下面写几个例子。

自定义IF函数例子

第二、三个参数是一样的数据类型。

create  or  replace  function  if (bln  boolean ,inValue1 anyelement,inValue2 anyelement)

returns  anyelement  as

$$

begin

if  bln= true  then

    return  inValue1 ;

else

    return  inValue2 ;

end  if ;

end ;

$$

language  plpgsql ;


第二、三个参数都是varchar类型:

create or replace function if(bln boolean,inValue1 VARCHAR,inValue2 VARCHAR)
returns varchar as
$$
begin
if bln=true then
   return inValue1;
else
   return inValue2;
end if;
end;
$$
language plpgsql;

第二、三个参数都是numeric类型:

create or replace function if(bln boolean,inValue1 numeric,inValue2 numeric)
returns numeric as
$$
begin
if bln=true then
   return inValue1;
else
   return inValue2;
end if;
end;
$$
language plpgsql;

如果有其他情况,按照使用场景的数据类型进行更换便是,需要注意的是返回值的数据类型要保持一致。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69994931/viewspace-2848906/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
瀚高PG实验室(Highgo PG Lab)依托于瀚高DBA运维团队及瀚高数据库PG内核研发团队,旨在深入研究PostgreSQL技术、使用技巧、内核探秘、PG教学等,并进行分享。欢迎大家关注、交流。

注册时间:2021-02-18

  • 博文量
    184
  • 访问量
    126073