powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / нужно "выудить" из текста
8 сообщений из 8, страница 1 из 1
нужно "выудить" из текста
    #39658232
Добрй день,
нужно "выудить" из текста название Constraint, при ошибке ORA-00001.
Посоветуйте, как можно записать этот селект более компактней:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
            SELECT SUBSTR (meldung, anfang, ende)
              FROM (SELECT   INSTR (
                                 SUBSTR (
                                     'Hasdkf H kasjd fHk jaskdf jkasfd hK hORA-00001: Unique Constraint (STAGE.EMPLOYEES_PK) violated jka aksdj fa sjaksdjf aksjdf',
                                       (INSTR (lower('Hasdkf H kasjd fHk jaskdf jkasfd hK hORA-00001: Unique Constraint (STAGE.EMPLOYEES_PK) violated jka aksdj fa sjaksdjf aksjdf'),
                                               'unique constraint ('))
                                     + 19),
                                 ')')
                           - 1
                               AS ende,
                           INSTR (lower('Hasdkf H kasjd fHk jaskdf jkasfd hK hORA-00001: Unique Constraint (STAGE.EMPLOYEES_PK) violated jka aksdj fa sjaksdjf aksjdf'), 'unique constraint (') + 19
                               anfang,
                               'Hasdkf H kasjd fHk jaskdf jkasfd hK hORA-00001: Unique Constraint (STAGE.EMPLOYEES_PK) violated jka aksdj fa sjaksdjf aksjdf' as meldung
                      FROM DUAL)



Thank you!
...
Рейтинг: 0 / 0
нужно "выудить" из текста
    #39658242
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
нужно "выудить" из текста
    #39658246
Elic,

спасибо.
...
Рейтинг: 0 / 0
нужно "выудить" из текста
    #39658247
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
regexp_substr(str, 'ORA-00001: Unique Constraint \(([^\)]*)\) violated', 1, 1, 'i', 1) ?
...
Рейтинг: 0 / 0
нужно "выудить" из текста
    #39658286
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hans Christian Andersen,
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
WITH t(s) AS (
select 'Hasdkf H kasjd fHk jaskdf jkasfd hK hORA-00001: Unique Constraint (STAGE.EMPLOYEES_PK) violated jka aksdj fa sjaksdjf aksjdf' from dual
)
,tt(c,b,e) as (
select s,instr(s,'('),instr(s,')') from t
)
SELECT SUBSTR(c,b+1,e-b-1) as constr FROM tt UNION ALL
select regexp_substr(s, '\(([^\)]*)\)', 1, 1, 'i', 1) from t
/



единственно, нужно учитывать, что на больших объёмах instr будет быстрее

p.s. у Вячеслав Любомудров, более точный поиск, я просто ищу текст в скобках
...
Рейтинг: 0 / 0
нужно "выудить" из текста
    #39658297
Спасибо Вячеслав Любомудров и Vadim Lejnin,

Взял вот это решение regexp_substr(str, 'ORA-00001: Unique Constraint \(([^\)]*)\) ', 1, 1, 'i', 1)
Заменил "violated" на пробел. Так как "violated" встречается на 2х языках.
...
Рейтинг: 0 / 0
нужно "выудить" из текста
    #39658405
alwan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hans Christian AndersenСпасибо Вячеслав Любомудров и Vadim Lejnin,

Взял вот это решение regexp_substr(str, 'ORA-00001: Unique Constraint \(([^\)]*)\) ', 1, 1, 'i', 1)
Заменил "violated" на пробел. Так как "violated" встречается на 2х языках.

Можно тогда заменить на
Код: sql
1.
(violated|нарушено)
...
Рейтинг: 0 / 0
нужно "выудить" из текста
    #39658440
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hans Christian Andersen"violated" встречается на 2х языкахИ с китайской винды никого в базу не пускать!
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / нужно "выудить" из текста
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]