瀚高DB兼容MySQL if函数

Posted 瀚高PG实验室

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了瀚高DB兼容MySQL if函数相关的知识,希望对你有一定的参考价值。

目录
环境
症状
问题原因
解决方案

环境
系统平台: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;

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

以上是关于瀚高DB兼容MySQL if函数的主要内容,如果未能解决你的问题,请参考以下文章

瀚高数据库兼容Mysql的unhex函数

瀚高数据库兼容Mysql的unhex函数

MySQL内置函数:year() week()兼容

MySQL内置函数:year() week()兼容

HGDB兼容MySQL if()函数

HGDB兼容MySQL if()函数