在postgres中,NANVL(oracle函数)的等价物是什么

在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

我正在尝试将oracle DB应用程序迁移到postgres。 我在研究生中似乎找不到与NANVL相当的。有没有办法效仿同样的做法

从:

NANVL函数仅适用于二进制浮点数或二进制双精度浮点数类型的浮点数。如果输入值n2是NaN(不是数字),它指示Oracle数据库返回可选值n1。如果n2不是NaN,则Oracle返回n2

编辑

当然,没有名字的马是正确的

一切都很简单:只需要一个
案例
,检查是否与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)
将生成一个错误。