#sql #postgresql #function
Вопрос:
Я получаю сообщение об ошибке при вызове функции. Ошибка:
ссылка на столбец «аренда» неоднозначна СТРОКА 2: активная ДЕТАЛЬ: она может ссылаться либо на переменную PL / PGSQL, либо на столбец таблицы
Запрос:
CREATE FUNCTION convert()
RETURNS TABLE (customerid int, fname varchar, lname varchar, email varchar, tripDate timestamp, rental varchar)
Language plpgsql
AS $
BEGIN
RETURN QUERY
SELECT CASE WHEN rental = 1
THEN 'yes'
ELSE 'no'
END
FROM EML
END; $;
Комментарии:
1. СЛУЧАЙ , нет
END
.
Ответ №1:
изменить
SELECT CASE WHEN rental = 1 THEN 'yes'
WHEN rental = 0 THEN 'no'
Для
SELECT
CASE
WHEN rental = 1
THEN 'yes'
ELSE 'no'
END
раздел редактирования:
если вы не хотите повторять только двоичное значение, вы должны добавить это условие следующим образом:
RETURN QUERY
SELECT
CASE
WHEN rental = 1
THEN 'yes'
ELSE 'no'
END
FROM EML WHERE rental In(0, 1)
Комментарии:
1. Я согласен, здесь нужно что-то еще. но разве это не предполагает, что все остальные значения должны быть
'no'
? что, если значение равно ‘3’, ‘да’, ‘cookie?’2. что вам нужно для недвоичных значений?
3. @arcee123 см. раздел редактирования.
4. @arcee123 в столбце rental есть только 1 и 0, которые я хотел бы использовать для повторного отображения таблицы, изменяя тип этого столбца с int на varchar и возвращая Yes или No . Приведенное выше по-прежнему выдает синтаксическую ошибку. Зная, что я изменяю тип данных в выходных данных, нужно ли мне сначала использовать команду alter table?
5. какой тип данных для поля аренды? Я получаю значение 1/0, но если мы имеем дело с битами против байтов против наименьших, тогда я понимаю, почему ошибка.