powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / обрезать часть строки
17 сообщений из 17, страница 1 из 1
обрезать часть строки
    #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
обрезать часть строки
    #39928853
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
'[^_]+$'
...
Рейтинг: 0 / 0
обрезать часть строки
    #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
обрезать часть строки
    #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
обрезать часть строки
    #39928874
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic
Код: plsql
1.
'[^_]+$'



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

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

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

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

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

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

Это я имел ввиду - под отрицанием.
...
Рейтинг: 0 / 0
обрезать часть строки
    #39929251
Фотография 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
обрезать часть строки
    #39929285
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
elimpion
Подскажите как их обрезать, чтобы получилось

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

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

Удалить все:

- после 2-го символа '_'
- после последнего символа '_'
- после последней цифры и '_' за ней;
- слова 'MAKET','DATE','DELETE' в конце
- после 'CAPTION_' + число + '_'
- и т.д
...
Рейтинг: 0 / 0
обрезать часть строки
    #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
обрезать часть строки
    #39929477
Рогафип
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plsql
1.
select regexp_substr( 'CAPTION_2333_DATE',  '.+\d_' ) from dual 
...
Рейтинг: 0 / 0
обрезать часть строки
    #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
обрезать часть строки
    #39936502
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg
Вы правда не поняли что я хотел спросить?
Не я один.
miltorg
Мне показалось что мы на одном уровне.
Говорят: "Когда кажется, перекрестись". Потому что тебе "кажется" неправильно.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / обрезать часть строки
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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