Функция Postgresql для возврата таблицы с изменением

#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, но если мы имеем дело с битами против байтов против наименьших, тогда я понимаю, почему ошибка.