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



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

SY.
...
Рейтинг: 0 / 0
13.06.2019, 18:12
    #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
13.06.2019, 18:25
    #39826307
mkr
mkr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с регулярным выражением
SYА зачем тут регулярка - INSTR + SUBSTR.

SY.

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

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

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

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

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

SY.

А от жадности не зависит?
...
Рейтинг: 0 / 0
14.06.2019, 09:30
    #39826416
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с регулярным выражением
mkrSYС точностью до наоборот (и на больших таблицах очень даже существенно).
SY.Вы правы!Отчасти. Соломон прав только в нескобочной части. Скорость от объёма данных не зависит (математика/физика 6-го класса).
...
Рейтинг: 0 / 0
18.06.2019, 22:33
    #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
19.06.2019, 01:15
    #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
19.06.2019, 02:09
    #39828064
SY
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
19.06.2019, 07:32
    #39828087
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с регулярным выражением
SYМедитируй:Модератор на старости лет решил заставить всех заниматься йогой?
...
Рейтинг: 0 / 0
19.06.2019, 08:40
    #39828114
shadow432
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с регулярным выражением
Спасибо ребятки.
Нашел такой способ.

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


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

SY.
...
Рейтинг: 0 / 0
19.06.2019, 13:47
    #39828365
shadow432
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с регулярным выражением
SY, Нет. Версия 12.2. Спасибо большое, почитаю.
...
Рейтинг: 0 / 0
19.06.2019, 16:06
    #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
19.06.2019, 16:25
    #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
19.06.2019, 16:35
    #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
19.06.2019, 16:56
    #39828495
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с регулярным выражением
Fogelну да.
вот:Заставь дурака богу молится - он лоб расшибёт…
...
Рейтинг: 0 / 0
19.06.2019, 17:00
    #39828498
Fogel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с регулярным выражением
ElicFogelну да.
вот:Заставь дурака богу молится - он лоб расшибёт…
дождь отменяется
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Помогите с регулярным выражением / 20 сообщений из 20, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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