ОШИБКА: не удалось найти функцию преобразования от неизвестного до текста

В PostgreSQL есть ошибка, которую он дает в одном из моих операторов select. Я обыскал в Интернете ответ и вышел с пустыми руками. Ответ, заданный другим вопросом, не соответствовал моей проблеме.

ERROR:  failed to find conversion function from unknown to text
********** Error **********
ERROR: failed to find conversion function from unknown to text
SQL state: XX000

Мой запрос выглядит примерно так:

Select * 
from (select 'string'  as Rowname, Data
      From table)
Union all
     (select 'string2' as Rowname, Data
      From table)

Дело в том, чтобы указать, что строка находится в одной точке. Строка - это имя строки. Вот мой желаемый результат:

Rowname Data 
string  53
string2 87

Любой возможный способ исправить эту ошибку?

Ответ 1

У вашего заявления есть пара проблем. Но сообщение об ошибке подразумевает, что вам нужно явное приведение для объявления (пока неизвестного) типа данных строкового литерала 'string':

SELECT text 'string' AS rowname, data FROM tbl1
UNION ALL
SELECT 'string2', data FROM tbl2

Этого достаточно для приведения в один SELECT запроса UNION. Как правило, первый, где имена столбцов также определены. Последующие списки SELECT с неизвестными типами будут соответствовать друг другу.

В других контекстах (например, предложение VALUES, прикрепленное к INSERT) Postgres извлекает типы данных из целевых столбцов и пытается автоматически привести к нужному типу.

Ответ 2

Select * from (select CAST('string' AS text) as Rowname, Data
  From table) Union all
 (select CAST('string2' AS text) as Rowname, Data
  From table)

Ссылка