在postgres中,NANVL(oracle函数)的等价物是什么
我正在尝试将oracle DB应用程序迁移到postgres。 我在研究生中似乎找不到与NANVL相当的。有没有办法效仿同样的做法 从: NANVL函数仅适用于二进制浮点数或二进制双精度浮点数类型的浮点数。如果输入值n2是NaN(不是数字),它指示Oracle数据库返回可选值n1。如果n2不是NaN,则Oracle返回n2 编辑 当然,没有名字的马是正确的 一切都很简单:只需要一个在postgres中,NANVL(oracle函数)的等价物是什么,oracle,postgresql,database-migration,Oracle,Postgresql,Database Migration,我正在尝试将oracle DB应用程序迁移到postgres。 我在研究生中似乎找不到与NANVL相当的。有没有办法效仿同样的做法 从: NANVL函数仅适用于二进制浮点数或二进制双精度浮点数类型的浮点数。如果输入值n2是NaN(不是数字),它指示Oracle数据库返回可选值n1。如果n2不是NaN,则Oracle返回n2 编辑 当然,没有名字的马是正确的 一切都很简单:只需要一个案例,检查是否与NaN相等 下面的一切都不正确。 与豪尔赫·坎波斯的建议类似:从 并将其修改为: /* Ripof
案例
,检查是否与NaN相等
下面的一切都不正确。
与豪尔赫·坎波斯的建议类似:从
并将其修改为:
/* Ripoff https://stackoverflow.com/questions/16195986/isnumeric-with-postgresql */
CREATE OR REPLACE FUNCTION nanvl(text, NUMERIC) RETURNS NUMERIC AS $$
DECLARE x NUMERIC;
BEGIN
x = $1::NUMERIC;
RETURN x;
EXCEPTION WHEN others THEN
RETURN $2;
END;
$$
STRICT
LANGUAGE plpgsql IMMUTABLE;
GO
SQLFiddle:
编辑
当然,没有名字的马是正确的
一切都很简单:只需要一个案例
,检查是否与NaN相等
下面的一切都不正确。
与豪尔赫·坎波斯的建议类似:从
并将其修改为:
/* Ripoff https://stackoverflow.com/questions/16195986/isnumeric-with-postgresql */
CREATE OR REPLACE FUNCTION nanvl(text, NUMERIC) RETURNS NUMERIC AS $$
DECLARE x NUMERIC;
BEGIN
x = $1::NUMERIC;
RETURN x;
EXCEPTION WHEN others THEN
RETURN $2;
END;
$$
STRICT
LANGUAGE plpgsql IMMUTABLE;
GO
SQLFiddle:
在Postgres中,您可以将数值与特殊常量比较
'NaN'
:
select some_column = 'NaN'
from some_table;
因此,您可以编写一个函数来实现nanvl()
:
在Postgres中,您可以将数值与特殊常量比较
'NaN'
:
select some_column = 'NaN'
from some_table;
因此,您可以编写一个函数来实现nanvl()
:
它(posgresql)没有这样的函数。您可以将
合并与此处的一个函数混合使用:因为您可能正在寻找Postgres专家的答案,您可能需要解释NANVL在Oracle中做了什么,以避免他们阅读Oracle文档。它(posgresql)没有这样的函数。你可以做的是将与这里的一个函数结合起来:因为你可能在寻找博士后专家的答案,您可能需要解释NANVL在Oracle中的作用,以避免他们阅读Oracle文档。根据该函数,仅检查NaN
字符值是否有效nanvl('foo',1)
将生成错误。根据该函数,仅检查NaN
字符值是否有效nanvl('foo',1)
将生成一个错误。