Синтаксис для функции Oracle SQL INSTR, если шаблон содержит шестнадцатеричные символы - PullRequest
1 голос
/ 14 августа 2010

Я пытаюсь написать запрос в Oracle SQL для доступа к определенной подстроке в поле CLOB.

Чтобы использовать функцию SUBSTR, мне нужно найти начальную точку в CLOB, используя функцию INSTR.

CLOB содержит данные X12, разделенные шестнадцатеричными символами.

Чтобы найти начальное смещение для моей подстроки, я хотел бы сделать что-то вроде этого ...

INSTR (my_clob, '\ 0x1CGE \ 0x1D', 1, 1)

.. где вторым параметром является мой «шаблон», представляющий собой шестнадцатеричный 1C, за которым следуют буквы G и E, а затем шестнадцатеричный 1D.

Я перепробовал все, что смог найти через Google, но пока ничего не получалось. Либо он не работает с неверным синтаксисом, либо вообще ничего не возвращает.

Для DBMS_LOB.INSTR () шаблон не совпадает с шаблоном, используемым для LIKE. Похоже, что он будет принимать только строку символов, а не выражение соответствия шаблону, хотя я не уверен на 100%, что он примет.

Есть идеи?

1 Ответ

2 голосов
/ 16 августа 2010

Если я вас правильно понял, \ 0x1C представляет один символ со значением ASCII 0x1C (десятичное 28), верно?

В этом случае попробуйте:

INSTR(my_clob, CHR(28)||'GE'||CHR(29), 1, 1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...