检查是否有任何元素 ISNULL [Postgresql]
Check if anyelement ISNULL [ Postgresql ]
我正在尝试在 postgresql 中实现访问函数 'isnull' 此函数将表达式和函数作为参数 returns 如果已传递 null,则为 true,如果不为 null,则为 false .我知道 postgres 有 'IS NULL' 和 'NOT NULL' 关键字,但是当我将字符串或空值本身传递给函数时,我总是遇到多态错误,因为它们都是未知类型。
此方法必须使用函数来完成。
我目前拥有的:
CREATE OR REPLACE FUNCTION isnull( anyelement ) RETURNS anyelement as $$
BEGIN
IF IS NULL THEN RETURN TRUE;
ELSE RETURN FALSE;
END IF;
END
$$LANGUAGE plpgsql;
我成功了
CREATE OR REPLACE FUNCTION isnull( anyelement ) RETURNS boolean as $$
BEGIN
RETURN IS NULL;
END
$$LANGUAGE plpgsql;
测试:
CREATE TEMP TABLE test(a int, b int);
INSERT INTO test VALUES (1, null), (2, null);
SELECT isnull(a), isnull(b) FROM test;
给出:
isnull | isnull
--------+--------
f | t
f | t
如果您定义这两个函数,它将适用于所有情况:
CREATE OR REPLACE FUNCTION isnull(anyelement) RETURNS boolean
LANGUAGE sql IMMUTABLE AS 'SELECT IS NULL';
CREATE OR REPLACE FUNCTION isnull(unknown) RETURNS boolean
LANGUAGE sql IMMUTABLE AS 'SELECT ::text IS NULL';
额外的好处是 SQL 可以内联这些函数。
我正在尝试在 postgresql 中实现访问函数 'isnull' 此函数将表达式和函数作为参数 returns 如果已传递 null,则为 true,如果不为 null,则为 false .我知道 postgres 有 'IS NULL' 和 'NOT NULL' 关键字,但是当我将字符串或空值本身传递给函数时,我总是遇到多态错误,因为它们都是未知类型。
此方法必须使用函数来完成。
我目前拥有的:
CREATE OR REPLACE FUNCTION isnull( anyelement ) RETURNS anyelement as $$
BEGIN
IF IS NULL THEN RETURN TRUE;
ELSE RETURN FALSE;
END IF;
END
$$LANGUAGE plpgsql;
我成功了
CREATE OR REPLACE FUNCTION isnull( anyelement ) RETURNS boolean as $$
BEGIN
RETURN IS NULL;
END
$$LANGUAGE plpgsql;
测试:
CREATE TEMP TABLE test(a int, b int);
INSERT INTO test VALUES (1, null), (2, null);
SELECT isnull(a), isnull(b) FROM test;
给出:
isnull | isnull
--------+--------
f | t
f | t
如果您定义这两个函数,它将适用于所有情况:
CREATE OR REPLACE FUNCTION isnull(anyelement) RETURNS boolean
LANGUAGE sql IMMUTABLE AS 'SELECT IS NULL';
CREATE OR REPLACE FUNCTION isnull(unknown) RETURNS boolean
LANGUAGE sql IMMUTABLE AS 'SELECT ::text IS NULL';
额外的好处是 SQL 可以内联这些函数。