powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Помогите с регулярным выражением
20 сообщений из 20, страница 1 из 1
Помогите с регулярным выражением
    #39826294
mkr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в таблице есть строковая записи вида:
Код: plsql
1.
"RateValueEqualIR=10","LowRateValueEqualIR=5","RateValueMoreThenIR=30","LowRateValueMoreThenIR=15","RIKind=0","RIValue=50000"



подскажите, как с помощью регулярного выражения, вытащить значение атрибута, например RateValueMoreThenIR
...
Рейтинг: 0 / 0
Помогите с регулярным выражением
    #39826298
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем тут регулярка - INSTR + SUBSTR.

SY.
...
Рейтинг: 0 / 0
Помогите с регулярным выражением
    #39826301
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
with t(s) as (select '"RateValueEqualIR=10","LowRateValueEqualIR=5","RateValueMoreThenIR=30","LowRateValueMoreThenIR=15","RIKind=0","RIValue=50000"' from dual)
select regexp_substr(s,'RateValueMoreThenIR=(\d+)"',1,1,null,1) rexp
from t
;

REXP
----
30

SQL> 
...
Рейтинг: 0 / 0
Помогите с регулярным выражением
    #39826307
mkr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SYА зачем тут регулярка - INSTR + SUBSTR.

SY.

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

С точностью до наоборот (и на больших таблицах очень даже существенно).

SY.
...
Рейтинг: 0 / 0
Помогите с регулярным выражением
    #39826408
mkr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SYС точностью до наоборот (и на больших таблицах очень даже существенно).
SY.

Вы правы!
Всем спасибо.
...
Рейтинг: 0 / 0
Помогите с регулярным выражением
    #39826413
Dshedoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SYmkrбыть может регулярку oracle оптимальнее выполняет

С точностью до наоборот (и на больших таблицах очень даже существенно).

SY.

А от жадности не зависит?
...
Рейтинг: 0 / 0
Помогите с регулярным выражением
    #39826416
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mkrSYС точностью до наоборот (и на больших таблицах очень даже существенно).
SY.Вы правы!Отчасти. Соломон прав только в нескобочной части. Скорость от объёма данных не зависит (математика/физика 6-го класса).
...
Рейтинг: 0 / 0
Помогите с регулярным выражением
    #39828014
shadow432
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ребята подскажите пожалуйста с запросом.

SELECT REGEXP_SUBSTR('1,2,3,,,,7,8', '[^,]+', 1, 5) FROM dual

Дает 8. Идет поиск только заполненных значений, пустые пропускаются

У меня задача немного иная.

Запросы
SELECT REGEXP_SUBSTR('1,2,3,,,,7,8', '[^,]+', 1, 4) FROM dual
SELECT REGEXP_SUBSTR('1,2,3,,,,7,8', '[^,]+', 1, 5) FROM dual
SELECT REGEXP_SUBSTR('1,2,3,,,,7,8', '[^,]+', 1, 6) FROM dual

должны выдавать пустое значение. Т.е. мне нужно получить фактическое значение (пустое оно или заполнено не важно).
...
Рейтинг: 0 / 0
Помогите с регулярным выражением
    #39828058
Фотография Fogel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shadow432Ребята подскажите пожалуйста с запросом.

SELECT REGEXP_SUBSTR('1,2,3,,,,7,8', '[^,]+', 1, 5) FROM dual

Дает 8. Идет поиск только заполненных значений, пустые пропускаются

У меня задача немного иная.

Запросы
SELECT REGEXP_SUBSTR('1,2,3,,,,7,8', '[^,]+', 1, 4) FROM dual
SELECT REGEXP_SUBSTR('1,2,3,,,,7,8', '[^,]+', 1, 5) FROM dual
SELECT REGEXP_SUBSTR('1,2,3,,,,7,8', '[^,]+', 1, 6) FROM dual

должны выдавать пустое значение. Т.е. мне нужно получить фактическое значение (пустое оно или заполнено не важно).
+
замени на
*
...
Рейтинг: 0 / 0
Помогите с регулярным выражением
    #39828064
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fogel+
замени на
*

Ты бы регулярку покурил прежде чем такое советовать:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SQL> SELECT REGEXP_SUBSTR('1,2,3,,,,7,8', '[^,]+', 1,2) FROM dual;

R
-
2

SQL> SELECT REGEXP_SUBSTR('1,2,3,,,,7,8', '[^,]*', 1,2) FROM dual;

R
-


SQL> 





Медитируй:

Код: 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.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
SELECT  LEVEL ELEMENT_NUMBER,
        REGEXP_SUBSTR('1,2,3,,,,7,8','(^|,)([^,]*)',1,LEVEL,NULL,2) ELEMENT
  FROM  DUAL
  CONNECT BY LEVEL <= 8
/

ELEMENT_NUMBER ELEMENT
-------------- -------
             1 1
             2 2
             3 3
             4
             5
             6
             7 7
             8 8

8 rows selected.

SQL> -- или
SELECT  LEVEL ELEMENT_NUMBER,
        REGEXP_SUBSTR(',' || '1,2,3,,,,7,8',',([^,]*)',1,LEVEL,NULL,1) ELEMENT
  FROM  DUAL
  CONNECT BY LEVEL <= 8
/

ELEMENT_NUMBER ELEMENT
-------------- -------
             1 1
             2 2
             3 3
             4
             5
             6
             7 7
             8 8

8 rows selected.

SQL> 



SY.
...
Рейтинг: 0 / 0
Помогите с регулярным выражением
    #39828087
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SYМедитируй:Модератор на старости лет решил заставить всех заниматься йогой?
...
Рейтинг: 0 / 0
Помогите с регулярным выражением
    #39828114
shadow432
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо ребятки.
Нашел такой способ.

SELECT RTRIM(REGEXP_SUBSTR('1,2,3,,,,7,8', '[^,]*(,|$)', 1, ROWNUM),',') FROM dual CONNECT BY LEVEL<9
...
Рейтинг: 0 / 0
Помогите с регулярным выражением
    #39828356
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shadow432Нашел такой способ.


Ты на ископаeмой версии? Если нет, то доку по REGEXP_SUBSTR покури и открой для себя парамeтр subexpr. Тогда и RTRIM не понадобится.

SY.
...
Рейтинг: 0 / 0
Помогите с регулярным выражением
    #39828365
shadow432
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY, Нет. Версия 12.2. Спасибо большое, почитаю.
...
Рейтинг: 0 / 0
Помогите с регулярным выражением
    #39828441
Фотография Fogel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SYFogel+
замени на
*

...

Медитируй:

Код: 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.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
SELECT  LEVEL ELEMENT_NUMBER,
        REGEXP_SUBSTR('1,2,3,,,,7,8','(^|,)([^,]*)',1,LEVEL,NULL,2) ELEMENT
  FROM  DUAL
  CONNECT BY LEVEL <= 8
/

ELEMENT_NUMBER ELEMENT
-------------- -------
             1 1
             2 2
             3 3
             4
             5
             6
             7 7
             8 8

8 rows selected.

SQL> -- или
SELECT  LEVEL ELEMENT_NUMBER,
        REGEXP_SUBSTR(',' || '1,2,3,,,,7,8',',([^,]*)',1,LEVEL,NULL,1) ELEMENT
  FROM  DUAL
  CONNECT BY LEVEL <= 8
/

ELEMENT_NUMBER ELEMENT
-------------- -------
             1 1
             2 2
             3 3
             4
             5
             6
             7 7
             8 8

8 rows selected.

SQL> 



SY.

подумал проверить на работе. проверил. неправильно.
написал рабочий вариант.
захожу, а тут уже учителя расхехлились.

у дураков мысли сходятся )))
очень похоже получилось (и я не списывал - врать мне незачем)

мой вариант:
Код: plsql
1.
2.
select level, regexp_substr('1,2,3,,,,7,8','(\d*)(,)',1,level,null,1) as r from dual
connect by level <= 8



PS: Элик подобрел. видать к дождю.
...
Рейтинг: 0 / 0
Помогите с регулярным выражением
    #39828458
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fogel,
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
  1  select level, regexp_substr('1,2,3,,,,7,8','(\d*)(,)',1,level,null,1) as r from dual
  2* connect by level <= 8
SQL> /

     LEVEL R
---------- ------------
         1 1
         2 2
         3 3
         4
         5
         6
         7 7
         8



.....
stax
...
Рейтинг: 0 / 0
Помогите с регулярным выражением
    #39828474
Фотография Fogel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StaxFogel,
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
  1  select level, regexp_substr('1,2,3,,,,7,8','(\d*)(,)',1,level,null,1) as r from dual
  2* connect by level <= 8
SQL> /

     LEVEL R
---------- ------------
         1 1
         2 2
         3 3
         4
         5
         6
         7 7
         8



.....
stax
ну да.
вот:
Код: plsql
1.
2.
select level, regexp_substr('1,2,3,,,,7,8'||',','(\d*)(,)',1,level,null,1) as r from dual
connect by level <= 8
...
Рейтинг: 0 / 0
Помогите с регулярным выражением
    #39828495
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fogelну да.
вот:Заставь дурака богу молится - он лоб расшибёт…
...
Рейтинг: 0 / 0
Помогите с регулярным выражением
    #39828498
Фотография Fogel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElicFogelну да.
вот:Заставь дурака богу молится - он лоб расшибёт…
дождь отменяется
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Помогите с регулярным выражением
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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