ВЫБЕРИТЕ DISTINCT OVER TEXT в соответствии с потребностями общего запроса в PostgreSQL и Oracle - PullRequest
0 голосов
/ 03 февраля 2020

Моя таблица

Имя - столбец папки - описание типа текстовых данных

SELECT DISTICT description 
from FOLDER 

отлично работает в PostgreSQL, но не в oracle с ошибкой

ORA-00932: несовместимые типы данных: ожидается - получено CLOB

Мне нужен общий запрос, который работает как в PostgreSQL, так и в Oracle для этого SELECT DISTINCT description from FOLDER.

1 Ответ

3 голосов
/ 03 февраля 2020

Oracle не поддерживает DISTINCT со столбцом CLOB. Вы можете использовать TO_CHAR (когда максимальная длина столбца CLOB меньше 4000)

SELECT DISTINCT to_char(description) from FOLDER;

Поскольку вы упомянули в комментарии, что он работает нормально для oracle, я предполагаю, что нет проблемы длины. Поскольку вы ищете общее решение для POSTGRES и ORACLE, я бы предложил CAST

SELECT DISTINCT CAST(description as varchar(3000)) from FOLDER;

Это должно работать в обеих базах данных. Измените VARCHAR(N) соответственно до максимального предела.

ВНИМАНИЕ: я не рекомендую использовать VARCHAR вместо VARCHAR2 в oracle.

Тип данных VARCHAR является синонимом типа данных VARCHAR2. Чтобы избежать возможных изменений в поведении, всегда используйте тип данных VARCHAR2 для хранения символьных строк переменной длины.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...