Cитуация: поле в таблице имеет тип bytea (бинарные данные), но вы точно знаете, что внутри него хранится обычный текст (например, из-за ошибки проектирования или legacy-системы).
НЕ используйте ::text — он покажет шестнадцатеричный код (\x48656C6C6F), а не исходный текст.
|
1 |
select value::text from table where '...'; |
Т.е. пример выше не улучшит ситуацию, т.к. текст останется не читаемым.
Правильный способ — функция convert_from() с указанием кодировки:
|
1 |
SELECT convert_from(value, 'UTF8') AS text_value FROM table WHERE '...'; |
Примеры наиболее распространенных кодировок
| UTF-8 | Современные системы, веб, Linux (по умолчанию) | convert_from(value, 'UTF8') |
| WIN1251 | Старые Windows-приложения, кириллица (1С, Access) | convert_from( |
| KOI8 | Очень старые UNIX-системы | convert_from( |
| LATIN1 | Западноевропейские языки (ISO-8859-1) | convert_from(value, 'LATIN1') |


