Я пытаюсь найти способ использовать DISTINCT для внутреннего SELECT, который читает CLOB . Перед применением DISTINCT я конвертирую CLOB в to_char, по-видимому, в БД есть записи, которые go значительно превышают количество символов в 10.000, поэтому я использую substr, чтобы ограничить их максимумом 4000 символы. Смысл использования DISTINCT в том, что в столбце, который я ищу, есть много дубликатов (я не могу удалить дубликаты заранее), и мне нужно получить максимум 1500 результатов, и для того, чтобы это работало, мне нужно сначала удалить дубликаты, а затем возьмите первые 1500 результатов . Ниже приведен запрос, который я использую. В этом случае я ищу любые результаты.
SELECT
sub_synonym
FROM
( ( (
SELECT DISTINCT
to_char(substr(sub_synonym, 0, 4000)) AS sub_synonym
FROM
ingr,
sub_ca
WHERE
( ( ( ( ingr.id_d IN (
SELECT
sub_ca.id_d
FROM
sub_ca
WHERE
sub_ca.sub_synonym LIKE '%'
) ) ) )
AND ingr.id_d = sub_ca.id_d
AND ingr.log_d = 0 )
) ) )
WHERE
ROWNUM <= 1500;
При попытке получить следующее сообщение об ошибке: ORA-64203: Destination buffer too small to hold CLOB data after character set conversion.
Есть ли способ преодолеть это? Или как еще можно удалить дубликаты из ответа, прежде чем я получу первые 1500 результатов? (Я уже пробовал с group_by, но он не может работать с этим столбцом, очевидно).