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

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

ошибся с постановкой вопроса. есть функция, которая вместо длинной организационной формы проставляет короткую "Акционерное общество" меняет на "АО", к примеру. Как сделать, чтобы функция не переводила в нижний регистр само название организации?
...
Рейтинг: 0 / 0
26.08.2020, 15:24
    #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
26.08.2020, 15:25
    #39992577
SY
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
26.08.2020, 15:26
    #39992578
ASNexus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
извлечение подстроки по последнему слову
Murmakil,

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

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


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

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

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


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

SY.


Код: plsql
1.
select regexp_replace('Акционерное общество "Акционерное общество любителей выпить пивка на халяву"', 'Акционерное общество', 'АО', 1, 1) from dual
...
Рейтинг: 0 / 0
27.08.2020, 09:52
    #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
27.08.2020, 11:52
    #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
27.08.2020, 11:55
    #39992889
Murmakil
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
извлечение подстроки по последнему слову
где же все любители написать бессмысленные строки кода и боящиеся написать лишнюю строчку кода без оплаты??
...
Рейтинг: 0 / 0
27.08.2020, 12:22
    #39992902
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
извлечение подстроки по последнему слову
[quot Murmakil#22187986]где же все любители написать бессмысленные строки кода и боящиеся написать лишнюю строчку кода без оплаты??

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


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

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

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

У тебя весьма тухлая задача, которая не имеет чётко определённого решения. Бухи могут в поле org.name загнать любую херню. Парсер под такое не сделаешь. По идее вообще надо нормализовать и отделять огр.форму от названия.
...
Рейтинг: 0 / 0
27.08.2020, 12:45
    #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
27.08.2020, 13:25
    #39992947
Murmakil
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
извлечение подстроки по последнему слову
Мне сейчас сказали, что алгоритм не рабочий в том плане, что вместо пробела операционистки могут по ошибке вставить любой символ, поэтому на пробел смысла нет ориентироваться. Думаю решение д.б. таким, что прописать все фгбу, ооо, ОАО и прочие формы и после них шло название организации из первой переменной, в которой прописана полная организационная форма. Вроде через регулярные выражения можно сделать, но я хз как. С ораклом до этого не работал
...
Рейтинг: 0 / 0
27.08.2020, 14:56
    #39993004
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
извлечение подстроки по последнему слову
Murmakil,

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

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


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


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

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

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

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

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

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

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

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


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

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

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


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

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

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


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