Oracle BLOB для поиска как - PullRequest
       6

Oracle BLOB для поиска как

0 голосов
/ 25 января 2019

Я пытаюсь найти текст внутри BLOB для поля электронной почты с подчеркиванием на электронной почте (например, my_email@anymailprovider.com), поэтому при отсутствии BLOB оно будет выглядеть так:

select * from TEXT_COLUMN where request_column like '%email%_%';

Итак, что-то подобное, чтобы заставить его работать:

select * from BLOB_COLUMN where dbms_lob.instr(request_column, utl_raw.cast_to_raw('%email%_%'))>0 

Конечно, последнее недопустимо, но это то, что мне нужно сделать, чтобы искать внутри BLOB.

Ответы [ 2 ]

0 голосов
/ 25 января 2019

Ищите email, а затем ищите _, следующий за ним:

SELECT *
FROM   (
  SELECT b.*,
         DBMS_LOB.INSTR(
           request_column,
           utl_raw.cast_to_raw( 'email' ),
           1,
           1
         ) AS email_location
  FROM   BLOB_COLUMN b
)
WHERE  email_location > 0
AND    DBMS_LOB.INSTR(
         request_column,
         utl_raw.cast_to_raw( '_' ),
         email_location,
         1
       ) > 0;
0 голосов
/ 25 января 2019

Цитирование:

"Если вы храните простой текст, это должен быть CLOB, а не BLOB, и тогда вы все равно можете делать запросы, используя LIKE. BLOB содержит двоичные данные, структура которых Oracle не знаетиз, поэтому он не может искать его таким образом. "

Преобразование BLOB в CLOB: http://www.dba -oracle.com / t_convert_blob_to_clob_script.htm

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