powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / извлечение подстроки по последнему слову
25 сообщений из 58, страница 1 из 3
извлечение подстроки по последнему слову
    #39992563
Murmakil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
как извлечь из строки "Акционерное общество Ромашка" подстроку "Акционерное общество"? Разумеется, слово после "общество" может быть любым другим.
...
Рейтинг: 0 / 0
извлечение подстроки по последнему слову
    #39992568
ASNexus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Murmakil,

Ромашку можно извлечь, например, так:
Код: plsql
1.
select regexp_substr('Акционерное общество Ромашка', '\w+$') from dual
...
Рейтинг: 0 / 0
извлечение подстроки по последнему слову
    #39992574
Murmakil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ASNexus,

ошибся с постановкой вопроса. есть функция, которая вместо длинной организационной формы проставляет короткую "Акционерное общество" меняет на "АО", к примеру. Как сделать, чтобы функция не переводила в нижний регистр само название организации?
...
Рейтинг: 0 / 0
извлечение подстроки по последнему слову
    #39992575
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Murmakil
как извлечь из строки "Акционерное общество Ромашка" подстроку "Акционерное общество"? Разумеется, слово после "общество" может быть любым другим.


Перечитайте Ваш вопрос, Там все однозначно?
С одной стороны:
> ... "Акционерное общество Ромашка" подстроку "Акционерное общество"
С другой:
> ...слово после "общество" может быть любым другим.

Что Вы все же хотите?
Учитывать, или не учитывать пробелы?

Про параметр occurrence в описании функций INSTR и REGEXP_INSTR Вы прочитали?
Дока...
occurrence - is an integer indicating which occurrence of substring in string Oracle should search for. The value of occurrence must be positive. If occurrence is greater than 1, then the database does not return on the first match but continues comparing consecutive substrings of string, as described above, until match number occurrence has been found.


для информации

Студентам, желающим помощи
HOWTO :: Как правильно задавать вопросы
Как мне оформить свое сообщение?

Чтобы Вам помогли:

1) Полная и точная постановка задачи (без сокращений), что на входе, что на выходе

2) Подготовьте тестовые данные, лучше в виде with
например (не ваш случай):

Код: plsql
1.
2.
3.
4.
5.
with tbl(col1,col2,col3) as (
select 1,'name1',to_date('11.02.1921','DD.MM.YYYY') from dual union all
select 2,'name2',to_date('11.02.1922','DD.MM.YYYY') from dual
)
select col2 from tbl...



3) Покажите что сделали, чтобы было видно что не халяву просите

4) используйте Тэги, читать код без них неудобно
...
Рейтинг: 0 / 0
извлечение подстроки по последнему слову
    #39992577
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ASNexus

Ромашку можно извлечь, например, так:
Код: plsql
1.
select regexp_substr('Акционерное общество Ромашка', '\w+$') from dual



A извлечь Акционерное общество

Код: plsql
1.
select regexp_replace('Акционерное общество Ромашка ', '\s+\w+$') from dual;



или, если возможны строки:

Код: plsql
1.
select regexp_replace('Акционерное общество Ромашка   ', '\s+\w+\s*$') from dual;



или, если возможны строки:

Код: plsql
1.
select regexp_replace('Акционерное общество "Ромашка"  ', '\W*\w+\W*$') from dual;



SY.
...
Рейтинг: 0 / 0
извлечение подстроки по последнему слову
    #39992578
ASNexus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Murmakil,

А простого replace недостаточно?
Код: plsql
1.
select replace('Акционерное общество Ромашка', 'Акционерное общество', 'АО') from dual
...
Рейтинг: 0 / 0
извлечение подстроки по последнему слову
    #39992582
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ASNexus
Murmakil,

А простого replace недостаточно?


'Акционерное общество "Акционерное общество любителей выпить пивка на халяву"'

SY.
...
Рейтинг: 0 / 0
извлечение подстроки по последнему слову
    #39992584
ASNexus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY
ASNexus
Murmakil,

А простого replace недостаточно?


'Акционерное общество "Акционерное общество любителей выпить пивка на халяву"'

SY.


Код: plsql
1.
select regexp_replace('Акционерное общество "Акционерное общество любителей выпить пивка на халяву"', 'Акционерное общество', 'АО', 1, 1) from dual
...
Рейтинг: 0 / 0
извлечение подстроки по последнему слову
    #39992829
Murmakil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот мое решение.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
declare p1 varchar2(255);
           p2 varchar2(255);
begin
           p1:='Закрытое акционерное общество "Ромашка"';
           p2:='ЗАО "ромашка"';
           dbms_output.put_line(concat((substr(p2, 1, (instr(p2, ' ')))), substr(p1, (length(p1)-length(p2)+length(instr(p2, ' '))+3))));
end;


Как избавиться от необходимости добавлять цифру в конце? Ведь если будет ФГБОУ, например, то произойдет смещение.
...
Рейтинг: 0 / 0
извлечение подстроки по последнему слову
    #39992886
Murmakil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
с replace таких проблем вроде нет
Код: plsql
1.
dbms_output.put_line(replace(p2, subtr((p2), (instr(p2, ' ')+1, substr((p1), length(p1)-length((substr((p2), (instr(p2, ' '))+2)))))));
...
Рейтинг: 0 / 0
извлечение подстроки по последнему слову
    #39992889
Murmakil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
где же все любители написать бессмысленные строки кода и боящиеся написать лишнюю строчку кода без оплаты??
...
Рейтинг: 0 / 0
извлечение подстроки по последнему слову
    #39992902
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Murmakil#22187986]где же все любители написать бессмысленные строки кода и боящиеся написать лишнюю строчку кода без оплаты??

авторКак сделать, чтобы функция не переводила в нижний регистр само название организации?


покажите код, и определитесь что же надо сделать?

АО РОМАШКА заменить на АO Ромашка?

....
stax
...
Рейтинг: 0 / 0
извлечение подстроки по последнему слову
    #39992910
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Murmakil,

У тебя весьма тухлая задача, которая не имеет чётко определённого решения. Бухи могут в поле org.name загнать любую херню. Парсер под такое не сделаешь. По идее вообще надо нормализовать и отделять огр.форму от названия.
...
Рейтинг: 0 / 0
извлечение подстроки по последнему слову
    #39992919
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Murmakil

Как избавиться от необходимости добавлять цифру в конце? Ведь если будет ФГБОУ, например, то произойдет смещение.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Wrote file afiedt.buf

  1  declare
  2             p1 varchar2(255);
  3             p2 varchar2(255);
  4             i1 pls_integer;
  5             i2 pls_integer;
  6  begin
  7             p1:='Закрытое акционерное общество "Ромашка"';
  8             p2:='ФГБОУ "РоМаШка"';
  9             i1:=instr(p2, ' ');
 10             i2:=length(p2)-i1;
 11             dbms_output.put_line(substr(p2, 1, i1)||substr(p1, -i2));
 12* end;
SQL> /
ФГБОУ "Ромашка"

PL/SQL procedure successfully completed.



или надо на sql?

.....
stax
...
Рейтинг: 0 / 0
извлечение подстроки по последнему слову
    #39992947
Murmakil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне сейчас сказали, что алгоритм не рабочий в том плане, что вместо пробела операционистки могут по ошибке вставить любой символ, поэтому на пробел смысла нет ориентироваться. Думаю решение д.б. таким, что прописать все фгбу, ооо, ОАО и прочие формы и после них шло название организации из первой переменной, в которой прописана полная организационная форма. Вроде через регулярные выражения можно сделать, но я хз как. С ораклом до этого не работал
...
Рейтинг: 0 / 0
извлечение подстроки по последнему слову
    #39993004
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Murmakil,

запретить ввод "огр.формы" (выбирать из списка)

.....
stax
...
Рейтинг: 0 / 0
извлечение подстроки по последнему слову
    #39993025
Murmakil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax,
...
i1:=instr(p2, ' ')
...
а сюда можно прописать все организационные формы, если использовать regexp_instr?
...
Рейтинг: 0 / 0
извлечение подстроки по последнему слову
    #39993034
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Murmakil
Stax,
...
i1:=instr(p2, ' ')
...
а сюда можно прописать все организационные формы, если использовать regexp_instr?


не понял вопрос


p2 ето результат работы существующей ф-ции, "которая вместо длинной организационной формы проставляет короткую и переводит в нижний регистр само название организации "

p2:=my_func('Закрытое акционерное общество "Ромашка"'); --'ЗАО "ромашка"';

там всегда есть пробел

боремся с "переводит в нижний регистр"

.....
stax
...
Рейтинг: 0 / 0
извлечение подстроки по последнему слову
    #39993036
oragraf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Murmakil,

атомарные данные + справочники = твое спасение. В том виде, как есть, задача устойчивого решения не имеет
...
Рейтинг: 0 / 0
извлечение подстроки по последнему слову
    #39993040
Murmakil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax,

ну а можно прописать там ОАО, ООО, ФГБУ и прочее, чтобы компилятор понимал, что после такого сочетания символов надо возвращать подстроку из p1?
...
Рейтинг: 0 / 0
извлечение подстроки по последнему слову
    #39993044
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Murmakil
ну а можно прописать там ОАО, ООО, ФГБУ и прочее, чтобы компилятор понимал, что после такого сочетания символов надо возвращать подстроку из p1?
Ты сам-то хоть что-либо можешь сделать самостоятельно, без выплёскивания на форум своей ничкемности?
...
Рейтинг: 0 / 0
извлечение подстроки по последнему слову
    #39993045
Murmakil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic,
а ты можешь промолчать, если по существу нечего сказать?
...
Рейтинг: 0 / 0
извлечение подстроки по последнему слову
    #39993046
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Murmakil
Elic,
а ты можешь промолчать, если по существу нечего сказать?
Чудак, зарплату надо зарабатывать своим умом, а не красть у форумчан:
Murmakil
Мне сейчас сказали, что алгоритм не рабочий
...
Рейтинг: 0 / 0
извлечение подстроки по последнему слову
    #39993056
Murmakil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic,
действительно, зачем этот форум нужен. пусть каждый сам ходит по граблям и изобретает велосипед
...
Рейтинг: 0 / 0
извлечение подстроки по последнему слову
    #39993078
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Murmakil
Stax,

ну а можно прописать там ОАО, ООО, ФГБУ и прочее, чтобы компилятор понимал, что после такого сочетания символов надо возвращать подстроку из p1?


конечно можно, но вбивать в код ОАО, ООО, ФГБУ, крайне нежелательно,
добавится напр ПП, и что, менять код?
должен быть справочник кодов, по нему проверять

надо определится какую задачу мы сдесь обсуждаем

1) как извлечь из строки "Акционерное общество Ромашка" подстроку "Акционерное общество"?
тут нужен справочник организационных форм
напр набьют "Акциoнернoе обществo Ромашка", o-латиницей, что тогда?
ф-ции нет, ее надо написать


2) Как сделать, чтобы функция не переводила в нижний регистр само название организации?
функция уже есть , но чутку не походит (переводит в нижний регистр само название)
сдесь справочника не надо, бером кусочек ("Ромашка") из исходной строкм

как стоит вопрос (1 или 2)?

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


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