Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / обрезать часть строки / 17 сообщений из 17, страница 1 из 1
20.02.2020, 12:33
    #39928839
elimpion
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обрезать часть строки
Здравствуйте, есть несколько строк формата:
CAPTION_1_MAKET
CAPTION_1_DATE
CAPTION_1_DELETE
...
CAPTION_22_MAKET
CAPTION_23_DATE
CAPTION_24_DELETE
Подскажите как их обрезать, чтобы получилось
CAPTION_1_
CAPTION_1_
CAPTION_1_
...
CAPTION_22_
CAPTION_23_
CAPTION_24_
...
Рейтинг: 0 / 0
20.02.2020, 12:44
    #39928853
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обрезать часть строки
Код: plsql
1.
'[^_]+$'
...
Рейтинг: 0 / 0
20.02.2020, 13:05
    #39928868
orawish
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обрезать часть строки
Код: plsql
1.
2.
3.
4.
5.
6.
7.
with t0 as (select 'CAPTION_22_MAKET' s from dual
  union all select 'CAPTION_24_DELETE' s from dual
)
select  s
       ,rtrim(s,'ABCDEFGHIJKLMNOPRSTUVXYZ') a
       ,substr(s,1,instr(s,'_',-1))         b
 from t0;
...
Рейтинг: 0 / 0
20.02.2020, 13:05
    #39928870
miltorg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обрезать часть строки
elimpion,

$_='CAPTION_1_MAKET
CAPTION_1_DATE
CAPTION_1_DELETE
CAPTION_22_MAKET
CAPTION_23_DATE
CAPTION_24_DELETE';

s/(.*_).*/$1/g;
print;
...
Рейтинг: 0 / 0
20.02.2020, 13:11
    #39928874
miltorg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обрезать часть строки
Elic
Код: plsql
1.
'[^_]+$'



Классно.
Я в начале так же делал - но оно жадно:

_.*$
...
Рейтинг: 0 / 0
20.02.2020, 13:13
    #39928875
miltorg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обрезать часть строки
Elic,

А как сделать отрицание на это:

.*_
...
Рейтинг: 0 / 0
20.02.2020, 20:54
    #39929180
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обрезать часть строки
miltorg
Я в начале так же делал
Ты не в состоянии формулировать истинностные высказывания.

miltorg
А как сделать
http://www.bugtraq.ru/forum/faq/general/smart-questions.html] RTFM
...
Рейтинг: 0 / 0
20.02.2020, 22:30
    #39929203
miltorg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обрезать часть строки
Elic,
Вы правда не поняли что я хотел спросить?
Жалко. Мне показалось что мы на одном уровне.
...
Рейтинг: 0 / 0
21.02.2020, 02:31
    #39929246
miltorg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обрезать часть строки
Отрицание... - как то я тут не совсем верно сказал.
Попытаюсь ещё раз. Этот шаблон правильный:
/.*_/g

Но взять я хотел не его, а всё что осталось в строке.
Не CAPTION_1_ , а MAKET

Это я имел ввиду - под отрицанием.
...
Рейтинг: 0 / 0
21.02.2020, 03:25
    #39929251
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обрезать часть строки
miltorg

Это я имел ввиду - под отрицанием.


Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
with t as (
           select 'CAPTION_1_MAKET' str from dual union all
           select 'CAPTION_1_DATE' from dual
          )
select  substr(str,instr(str,'_',-1) + 1) sub_str,
        regexp_substr(str,'[^_]+$') sub_str,
        regexp_replace(str,'^.*_(.+$)','\1') sub_str
  from  t
/

SUB_STR    SUB_STR    SUB_STR
---------- ---------- ----------
MAKET      MAKET      MAKET
DATE       DATE       DATE

SQL>



SY.
...
Рейтинг: 0 / 0
21.02.2020, 08:44
    #39929285
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обрезать часть строки
elimpion
Подскажите как их обрезать, чтобы получилось

substr(LABEL, 1, instr(LABEL, '_', 9))
...
Рейтинг: 0 / 0
21.02.2020, 10:45
    #39929333
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обрезать часть строки
А что, есть основания считать, что между CAPTION_1 и CAPTION_22 будет спрятано что-то неожиданное, что без регулярных выражений не обработать?
...
Рейтинг: 0 / 0
21.02.2020, 11:15
    #39929348
Да ну
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обрезать часть строки
elimpion,

В зависимости от данных точная постановка может быть разная, и решение тоже.

Удалить все:

- после 2-го символа '_'
- после последнего символа '_'
- после последней цифры и '_' за ней;
- слова 'MAKET','DATE','DELETE' в конце
- после 'CAPTION_' + число + '_'
- и т.д
...
Рейтинг: 0 / 0
21.02.2020, 11:16
    #39929349
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обрезать часть строки
Alibek B.
А что, есть основания считать, что между CAPTION_1 и CAPTION_22 будет спрятано что-то неожиданное, что без регулярных выражений не обработать?


вопрос скорее к elimpion?

напр в запросе есть where p like 'CAPTION/_%' тогда оснований мож и "немного"


часто бывает
изначально утверждают что всегда будет CAPTION_ (len 8),
но со временем появляются совсем короткие не CAPTION_

ps
от уровня бардака зависит
умнимики могут и TOM_123_MAKET_X1 запилить

.....
stax
...
Рейтинг: 0 / 0
21.02.2020, 14:14
    #39929477
Рогафип
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обрезать часть строки
Код: plsql
1.
select regexp_substr( 'CAPTION_2333_DATE',  '.+\d_' ) from dual 
...
Рейтинг: 0 / 0
21.02.2020, 14:30
    #39929495
Рогафип
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обрезать часть строки
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
with t as (
           select 'CAPTION_1_MAKET' str from dual union all
           select 'CAPTION_221_DATE' from dual
          )
select  regexp_replace(str, '(.+)(_(\d+)_)(.+)','\1'),
        regexp_replace(str, '(.+)(_(\d+)_)(.+)','\2'),
        regexp_replace(str, '(.+)(_(\d+)_)(.+)','\3'),
        regexp_replace(str, '(.+)(_(\d+)_)(.+)','\4')
  from  t



CAPTION_1_1MAKETCAPTION_221_221DATE
...
Рейтинг: 0 / 0
12.03.2020, 07:52
    #39936502
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обрезать часть строки
miltorg
Вы правда не поняли что я хотел спросить?
Не я один.
miltorg
Мне показалось что мы на одном уровне.
Говорят: "Когда кажется, перекрестись". Потому что тебе "кажется" неправильно.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / обрезать часть строки / 17 сообщений из 17, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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