Oracle REGEXP_LIKE найти символ вертикальной табуляции 0xb - PullRequest
1 голос
/ 03 июля 2019

Попытка найти символ вертикальной табуляции в поле CLOB.Использование regexp_like, которое не поддерживает ввод шестнадцатеричных символов.так что это недопустимо и REGEXP_LIKE (, '[\ xB]', 'i') Записи Posix, похоже, не помогают, поскольку: cntl: включает такие элементы, как возврат каретки / новая строка, которая действительна в моем сценарии.

Ответы [ 2 ]

0 голосов
/ 03 июля 2019

Вы также можете рассмотреть возможность использования функции asciistr() в

regexp_like(clob_, asciistr(chr(to_number('0B','xx')))), чтобы определить, существует ли хотя бы один vertical tab character (десятичный: 11, шестнадцатеричный: 0B Char: ^K)в столбце clob_

select id
  from tab
 where regexp_like(clob_, asciistr(chr(to_number('0B','xx'))))

Демо

0 голосов
/ 03 июля 2019

Существует два стандартных способа задания непечатных символов в Oracle - chr() для 8-битных кодовых страниц и unistr() для UTF-16.Вот пример, который показывает их оба (вертикальная табуляция десятичная 11 для 8-битной и \ 000B для UTF-16).

with test as (select to_clob(unistr('\000B')) as str from dual)
select 'Found' from test
where regexp_like(str, chr(11),'i'); -- case insensitivity doesn't matter unless you're using letters
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...