如何从函数调用中 return 自定义值?
How to return custom value from function call?
我正在尝试在 PostgreSQL 13 中调用一个名为 account.user_available_sel
的函数,其中 return 是一个 table 数据。像这样很简单:
SELECT * FROM account.user_available_sel(_email => 'email@xxx.xxx');
SELECT *
部分 return 返回整个 table 数据,其中包括用户的 email, password, forename, surname. dob
等
因为这只是为了检查 email
是否还没有被注册,所以如果记录存在,我只想 return 一个像 invalid
这样的简单值。在我看来是这样的(显然行不通):
SELECT 'invalid' FROM account.user_available_sel(_email => 'email@xxx.xxx');
我怎么能只return那个字符串而不是整个记录集?
您可以使用 EXISTS
获取布尔值。
SELECT EXISTS (SELECT *
FROM account.user_available_sel(_email => 'email@xxx.xxx'));
如果这不令人满意,您当然可以在其周围打一个 CASE
并获得自定义字符串。
SELECT CASE
WHEN EXISTS (SELECT *
FROM account.user_available_sel(_email => 'email@xxx.xxx')) THEN
'existent'
ELSE
'non-existent'
END;
同样,您可以对数字或任何您喜欢的内容执行此操作。
我正在尝试在 PostgreSQL 13 中调用一个名为 account.user_available_sel
的函数,其中 return 是一个 table 数据。像这样很简单:
SELECT * FROM account.user_available_sel(_email => 'email@xxx.xxx');
SELECT *
部分 return 返回整个 table 数据,其中包括用户的 email, password, forename, surname. dob
等
因为这只是为了检查 email
是否还没有被注册,所以如果记录存在,我只想 return 一个像 invalid
这样的简单值。在我看来是这样的(显然行不通):
SELECT 'invalid' FROM account.user_available_sel(_email => 'email@xxx.xxx');
我怎么能只return那个字符串而不是整个记录集?
您可以使用 EXISTS
获取布尔值。
SELECT EXISTS (SELECT *
FROM account.user_available_sel(_email => 'email@xxx.xxx'));
如果这不令人满意,您当然可以在其周围打一个 CASE
并获得自定义字符串。
SELECT CASE
WHEN EXISTS (SELECT *
FROM account.user_available_sel(_email => 'email@xxx.xxx')) THEN
'existent'
ELSE
'non-existent'
END;
同样,您可以对数字或任何您喜欢的内容执行此操作。