ОШИБКА: не удалось найти функцию преобразования от неизвестного до текста
В 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)
Ссылка