Попытка выбрать строку и определенное количество символов, окружающих ее, из поля CLOB в Oracle. Получение нулевого значения.
У меня есть поле CLOB, в котором мне нужно искать определенное слово, чтобы я мог видеть, что окружают слова вокруг этого слова, и я могу видеть, нужно ли настроить другой запрос, который использует CONTAINS, чтобы устранить неудачные находки.
Я нашел расположение строки:
SELECT id, instr(upper(clob_column), 'searchword'),
FROM table
WHERE id LIKE '123456';
Я могу найти длину поля, используя:
SELECT LENGTH('searchword')+10 from dual;
Я могу посмотреть на текст в гвоздике по очереди:
SELECT id, dbms_lob.substr(clob_column,500,1)
FROM table
WHEREe id LIKE '123456';
Когда я объединяю их все, используя функцию substr, я получаю нулевое значение:
SELECT id,
SUBSTR(DBMS_LOB.SUBSTRR(clob_column,1000000000,1000000000), (INSTR(UPPER(clob_column), 'SEARCHWORD'))-10, 16 )
FROM table
WHERE id LIKE '123456';
Я даже пытался заглушить запрос и жестко закодировать некоторые из входных данных:
SELECT id,
SUBSTR(DBMS_LOB.SUBSTRR(clob_column,1000000000,1000000000), 7865, 16 ) as clobtext
FROM table
WHERE id LIKE '123456';
Я попытался выбрать все байты до 4 ГБ, 1 ГБ за раз из поля clob.
dbms_lob.substr (clob_column, for_how_many_bytes, from_which_byte);
Я ожидаю:
id clobtext
123456 Sometextaa Clobtext Sometextaa