Гость
Map
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Обрезать наименование получателя / 5 сообщений из 5, страница 1 из 1
14.12.2021, 16:38
    #40119997
Matilda_tm
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезать наименование получателя
Здравствуйте, необходимо сократить наименование получателя платежа.
Возможные вариации:
УФК по Хабаровскому краю (МИ ФНС России по Хабаровскому краю) - должно остаться МИ ФНС
УФК по Курской области (УФНС по Курской области) - должно остаться УФНС
УФК по Воронежской области (ИФНС России по Воронежской области) - должно остаться ИФНС
УФК МФ РФ по г.Санкт-Петербургу (для ИМНС по г.Санкт-Петербургу) - должно остаться ИМСН
может так же встретится полное название Управление федеральной налоговой службы вместо аббревиатуры УФНС.
Подскажите как сделать. Заранее спасибо всем ответившим.
...
Рейтинг: 0 / 0
14.12.2021, 16:52
    #40120002
Vadim Lejnin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезать наименование получателя
Matilda_tm,

Пока не понятно что Вы хотите.
Если Вы придумаете однозначный алгоритм, который описывает преобразование полного имени в короткое, то
Реализовать Вам его помогут (или Вы сами его сделаете), но пока я не вижу постановки задачи.
Тем более, скорее всего, то что Вы привели, далеко не полный набор необходимых подстановок.
Для начала разберитесь что необходимо.

Если в общем случае формализовать такое преобразование невозможно, то следует использовать таблицу замен (справочник).

Ну и на будущее, чтобы Вам помогли (а не сделали за Вас), подготовьте данные, покажите что сделали сами. Халявщиков никто не любит.

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

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

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

3) Покажите что сделали, что получили, без сокращений. ( лучше не в виде screenshot)

4) используйте Тэги, читать код без них неудобно, правильно оформляйте сообщение

Пример подготовленных данных, запроса и вывода.
Код: 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.
-- table 1 with column list
with user_tab(user_id,user_name,registry_date) as (
select 1,'Bob',to_date('11.02.1921 23:04:44','DD.MM.YYYY HH24:MI:SS') from dual union all
select 2,'Max',to_date('11.02.1922 23:04:44','DD.MM.YYYY HH24:MI:SS') from dual union all
select 3,'Jon',to_date('11.02.1923 23:04:44','DD.MM.YYYY HH24:MI:SS') from dual
)
-- table 2 with column list
,user_post(post_id,user_id,parent_post_id,post_date,message) as (
select 100,1,null,to_date('11.02.1923 23:04:00','DD.MM.YYYY HH24:MI:SS'),'Hi' from dual union all
select 101,2,100,to_date('11.02.1923 23:05:23','DD.MM.YYYY HH24:MI:SS'),'Hi' from dual union all
select 102,3,100,to_date('11.02.1923 23:05:35','DD.MM.YYYY HH24:MI:SS'),'Hi' from dual union all
select 103,1,102,to_date('11.02.1923 23:06:00','DD.MM.YYYY HH24:MI:SS'),'How are you' from dual union all
select 104,2,102,to_date('11.02.1923 23:07:05','DD.MM.YYYY HH24:MI:SS'),'All right!' from dual union all
select 105,1,101,to_date('11.02.1923 23:06:21','DD.MM.YYYY HH24:MI:SS'),'Bye' from dual union all
select 106,1,104,to_date('11.02.1923 23:04:37','DD.MM.YYYY HH24:MI:SS'),'Bye' from dual union all
select 107,2,null,to_date('11.02.1923 23:08:56','DD.MM.YYYY HH24:MI:SS'),'Hmm' from dual
)
select
rpad(to_char(p.post_date,'YYYY-MM-DD HH24:MI:SS  '),20+level*2,' ')||u.user_name||': '||p.message as txt
from 
 user_post p
 join user_tab  u on ( p.user_id = u.user_id)
where p.post_date >= u.registry_date
start with p.parent_post_id is null 
connect by prior p.post_id=p.parent_post_id 
;

TXT
--------------------------------------------------------------------------------
1923-02-11 23:04:00   Bob: Hi
1923-02-11 23:05:23     Max: Hi
1923-02-11 23:06:21       Bob: Bye
1923-02-11 23:05:35     Jon: Hi
1923-02-11 23:06:00       Bob: How are you
1923-02-11 23:07:05       Max: All right!
1923-02-11 23:04:37         Bob: Bye
1923-02-11 23:08:56   Max: Hmm

8 rows selected.
...
Рейтинг: 0 / 0
14.12.2021, 17:57
    #40120013
Vadim Lejnin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезать наименование получателя
Matilda_tm,

И еще подумайте например над этим (я не специалист в области платежей):
1) Если есть платеж, то скорее всего будет ИНН или номер счета, или еще что-то, что можно использовать в качестве ключа справочника

2) У Вас:
> УФК по Курской области (УФНС по Курской области) - должно остаться УФНС
А если будет:
УФК по Воронежской области (УФНС по Воронежской области) - тоже должно остаться УФНС????

3) Очень может быть, что нужный Вам справочник уже есть, просто Вы не знаете об этом.
...
Рейтинг: 0 / 0
14.12.2021, 18:22
    #40120021
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезать наименование получателя
Matilda_tm,

Вырезать из скобок слова (больше 2х символов) в верхнем регистре?

....
stax
...
Рейтинг: 0 / 0
14.12.2021, 19:48
    #40120046
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезать наименование получателя
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
with t as (
select column_value s
  from table((select sys.odcivarchar2list('УФК по Хабаровскому краю (МИ ФНС России по Хабаровскому краю) - должно остаться МИ ФНС'
                                        ,'УФК по Курской области (УФНС по Курской области) - должно остаться УФНС'
                                        ,'УФК по Воронежской области (ИФНС России по Воронежской области) - должно остаться ИФНС'
                                        ,'УФК МФ РФ по г.Санкт-Петербургу (для ИМНС по г.Санкт-Петербургу) - должно остаться ИМСН')
                                        from dual
                                        )))
select s
     , regexp_substr(s, '(\(.*?)(([А-Я]+\s*)?[А-Я]{2,})',1,1,null,2) s2
 from t
;

S                                                                                S2
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
УФК по Хабаровскому краю (МИ ФНС России по Хабаровскому краю) - должно остаться  МИ ФНС
УФК по Курской области (УФНС по Курской области) - должно остаться УФНС          УФНС
УФК по Воронежской области (ИФНС России по Воронежской области) - должно остатьс ИФНС
УФК МФ РФ по г.Санкт-Петербургу (для ИМНС по г.Санкт-Петербургу) - должно остать ИМНС

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


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