我需要从中检查给定的文本是否为数字
功能。

isnumeric()创建函数:

CREATE OR REPLACE FUNCTION isnumeric(text) RETURNS BOOLEAN AS $$
DECLARE x NUMERIC;
BEGIN
    x = $1::NUMERIC;
    RETURN TRUE;
EXCEPTION WHEN others THEN
    RETURN FALSE;
END;
$$ LANGUAGE plpgsql IMMUTABLE;

我从中调用isnumeric()函数的函数:
create or replace function tm(var text)
returns varchar as
$$
begin
    if (select isnumeric(var))=t::BOOLEAN then
        raise info 'Is numeric value';
    else
        raise info 'Not numeric';
    end if;
end;
$$
language plpgsql;

调用functon:
select tm('1');

出现错误:

这是错误的详细信息:
ERROR:  column "t" does not exist
LINE 1: SELECT (select isnumeric(var))=t::BOOLEAN

最佳答案

您不需要select(实际上是错误的,如错误所示)-只需直接调用isnumeric
另外,顺便说一句,您的函数缺少return语句。

总结一下:

create or replace function tm(var text)
returns varchar as
$$
begin
    if (isnumeric(var)) then -- call isnumeric directly
        raise info 'Is numeric value';
    else
        raise info 'Not numeric';
    end if;
    return '0'; -- missing return value in the OP
end;
$$
language plpgsql;

关于postgresql - PostgreSQL 9.3 : isnumeric() in a condition,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28164186/

10-13 08:03