powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Oracle регулярные выражения
7 сообщений из 7, страница 1 из 1
Oracle регулярные выражения
    #39879294
KA_T_YA_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите, пожалуйста
Есть строка ( "qwert1":"r","n" , "qwert2":"r","n","d" , "qwert3":"r")
как с помощью функции REGEXP_SUBSTR получить таблицу со значениями
qwert1:r,n
qwert2:r,n,d
qwert3:r
...
Рейтинг: 0 / 0
Oracle регулярные выражения
    #39879367
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
select  replace(regexp_substr(поле,'"[^:]+":"[^ ]+"',1,n),'"') sub_str
  from  таблица,
        lateral(
                select  level n
                  from  dual
                  connect by level <= regexp_count(поле,'"[^:]+":"[^ ]+"')
               )
/



Например:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
with data as (
              select '( "qwert1":"r","n" , "qwert2":"r","n","d" , "qwert3":"r")' str from dual
             )
select  replace(regexp_substr(str,'"[^:]+":"[^ ]+"',1,n),'"') sub_str
  from  data,
        lateral(
                select  level n
                  from  dual
                  connect by level <= regexp_count(str,'"[^:]+":"[^ ]+"')
               )
/

SUB_STR
--------------------
qwert1:r,n
qwert2:r,n,d
qwert3:r

SQL> 



SY.
...
Рейтинг: 0 / 0
Oracle регулярные выражения
    #39879404
merch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SY, lateral-то зачем?
...
Рейтинг: 0 / 0
Oracle регулярные выражения
    #39879424
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
merchSY, lateral-то зачем?

А ты попрбуй на таблице с > 1 строкой.

SY.
...
Рейтинг: 0 / 0
Oracle регулярные выражения
    #39879439
KA_T_YA_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY, а если запятая не отделяется пробелом и select такой '( "qwert1":"r","n","qwert2":"r","n","d","qwert3":"r")' ?
...
Рейтинг: 0 / 0
Oracle регулярные выражения
    #39879463
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KA_T_YA_SY, а если запятая не отделяется пробелом и select такой '( "qwert1":"r","n","qwert2":"r","n","d","qwert3":"r")' ?

Ты это "огласите весь список пожалуйста" .

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
with data as (
              select 1 id,'( "qwert1":"r","n" , "qwert2":"r","n","d" , "qwert3":"r")' str from dual union all
              select 2,'( "qwert1":"r","n","qwert2":"r","n","d","qwert3":"r")' str from dual
             )
select  id,
        replace(regexp_substr(str,'"[^:]+":("[^,]",?)+',1,n),'"') sub_str
  from  data,
        lateral(
                select  level n
                  from  dual
                  connect by level <= regexp_count(str,'"[^:]+":("[^,]",?)+')
               )
/

        ID SUB_STR
---------- --------------------
         1 qwert1:r,n
         1 qwert2:r,n,d
         1 qwert3:r
         2 qwert1:r,n,
         2 qwert2:r,n,d,
         2 qwert3:r

6 rows selected.

SQL> 



SY.
...
Рейтинг: 0 / 0
Oracle регулярные выражения
    #39879468
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oops:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
with data as (
              select 1 id,'( "qwert1":"r","n" , "qwert2":"r","n","d" , "qwert3":"r")' str from dual union all
              select 2,'( "qwert1":"r","n","qwert2":"r","n","d","qwert3":"r")' str from dual
             )
select  id,
        rtrim(replace(regexp_substr(str,'"[^:]+":("[^,]",?)+',1,n),'"'),',') sub_str
  from  data,
        lateral(
                select  level n
                  from  dual
                  connect by level <= regexp_count(str,'"[^:]+":("[^,]",?)+')
               )
/

        ID SUB_STR
---------- --------------------
         1 qwert1:r,n
         1 qwert2:r,n,d
         1 qwert3:r
         2 qwert1:r,n
         2 qwert2:r,n,d
         2 qwert3:r

6 rows selected.

SQL> 



SY.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Oracle регулярные выражения
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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