Попытка выбрать строку и определенное количество символов, окружающих ее, из поля CLOB в Oracle - PullRequest
0 голосов
/ 26 марта 2019

Попытка выбрать строку и определенное количество символов, окружающих ее, из поля 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

...