#postgresql #postgresql-13
Вопрос:
Я пытаюсь вызвать функцию, вызываемую account.user_available_sel
в PostgreSQL 13, которая возвращает таблицу данных. Это очень просто, вот так:
SELECT * FROM account.user_available_sel(_email => 'email@xxx.xxx');
SELECT *
Часть возвращает всю таблицу данных, которая включает данные пользователя email, password, forename, surname. dob
и т. Д.
Поскольку предполагается, что это только для проверки того, что an email
еще не зарегистрирован, я хочу вернуть только простое значение, например invalid
, если запись существует. На мой взгляд, что-то вроде этого (очевидно, не работает):
SELECT 'invalid' FROM account.user_available_sel(_email => 'email@xxx.xxx');
Как я мог просто вернуть эту строку вместо всего набора записей?
Ответ №1:
Вы можете использовать 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;
Точно так же вы можете сделать это для чисел или для чего угодно.