powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Извлечь ФИО и дату рождения
9 сообщений из 9, страница 1 из 1
Извлечь ФИО и дату рождения
    #40138514
Andre3www
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!
Есть txt-файл c данными:
1Иванов Иван Иванович01.01.1991
2Петров Петр Петрович02.02.1992
3Сидоров Сидр Сидорович03.03.1993
и т.д.

Помогите пжл написать процедуру - которая бы извлекала из файла - Фамилию Имя Отчество и отдельно Дату Рождения
Результат: Иванов Иван Иванович
01.01.1991
...
Рейтинг: 0 / 0
Извлечь ФИО и дату рождения
    #40138517
Фотография SeaGate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andre3www [игнорируется] 
Код: SQL
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.
SQL> !cat /tmp/txt-файл\ с\ данными
1Иванов Иван Иванович01.01.1991
22Петров Петр Петрович02.02.1992
333Сидоров Сидр Сидорович03.03.1993

SQL> col full_name for a30
SQL> with function get_nth(s varchar2, nth int)
  2    return varchar2
  3  is
  4  begin
  5    return regexp_substr(s, '^(\d+)(.*)(\d{2}\.\d{2}\.\d{4})$', 1, 1, 'c', nth);
  6  end;
  7  select to_number(get_nth(s, 1)) id,
  8         get_nth(s, 2) full_name,
  9         to_date(get_nth(s, 3), 'dd/mm/yyyy') birth_date
 10    from external(
 11           (s varchar2(2000))
 12           default directory my_dir
 13           location ('txt-файл с данными')
 14         )
 15  /

        ID FULL_NAME                      BIRTH_DATE
---------- ------------------------------ ------------------
         1 Иванов Иван Иванович           01-JAN-91
        22 Петров Петр Петрович           02-FEB-92
       333 Сидоров Сидр Сидорович         03-MAR-93

SQL> select banner from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 23c Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free
...
Рейтинг: 0 / 0
Извлечь ФИО и дату рождения
    #40138536
Andre3www
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте!
Подскажите пжл как извлечь куски текста разделенными ';' - в Oracle

Например есть строки:
ООО "Арбуз";;;;
ОАО "RED";;154454856;;
Иванов Иван Иванович;01.02.2000;1245789657;1245786

т.е. не везде в строках есть данные межды ';'

Результат должен быть таким:
ООО "Арбуз" пусто пусто пусто
ОАО "RED" пусто 154454856 пусто
Иванов Иван Иванович 01.02.2000 1245789657 1245786
...
Рейтинг: 0 / 0
Извлечь ФИО и дату рождения
    #40138538
Andrey77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andre3www [игнорируется] 

with x as (
select 'ООО "Арбуз";;;;' s from dual union all
select 'ОАО "RED";;154454856;;' from dual union all
select 'Иванов Иван Иванович;01.02.2000;1245789657;1245786' from dual
)
select s
, substr(s, 0, instr(s, ';', 1, 1)-1) s1
, substr(s, instr(s, ';', 1, 1)+1, instr(s, ';', 1, 2)-instr(s, ';', 1, 1)-1 ) s2
, substr(s, instr(s, ';', 1, 2)+1, instr(s, ';', 1, 3)-instr(s, ';', 1, 2)-1 ) s3
, substr(s, instr(s, ';', 1, 3)+1, instr(s, ';', 1, 4)-instr(s, ';', 1, 3)-1 ) s4
, substr(s, instr(s, ';', 1, 4)+1, instr(s, ';', 1, 5)-instr(s, ';', 1, 4)-1 ) s5
from (select s || ';' as s from x)
...
Рейтинг: 0 / 0
Извлечь ФИО и дату рождения
    #40138539
Andre3www
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey77  27.03.2024, 10:47
[игнорируется]
Andre3www [игнорируется] 

with x as (
select 'ООО "Арбуз";;;;' s from dual union all
select 'ОАО "RED";;154454856;;' from dual union all
select 'Иванов Иван Иванович;01.02.2000;1245789657;1245786' from dual
)
select s
, substr(s, 0, instr(s, ';', 1, 1)-1) s1
, substr(s, instr(s, ';', 1, 1)+1, instr(s, ';', 1, 2)-instr(s, ';', 1, 1)-1 ) s2
, substr(s, instr(s, ';', 1, 2)+1, instr(s, ';', 1, 3)-instr(s, ';', 1, 2)-1 ) s3
, substr(s, instr(s, ';', 1, 3)+1, instr(s, ';', 1, 4)-instr(s, ';', 1, 3)-1 ) s4
, substr(s, instr(s, ';', 1, 4)+1, instr(s, ';', 1, 5)-instr(s, ';', 1, 4)-1 ) s5
from (select s || ';' as s from x)
Спасибо!

А через функцию REGEXP_SUBSTR можно оформить?
...
Рейтинг: 0 / 0
Извлечь ФИО и дату рождения
    #40138540
Andrey77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andre3www [игнорируется] 

можно.
...
Рейтинг: 0 / 0
Извлечь ФИО и дату рождения
    #40138541
Andre3www
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey77  27.03.2024, 11:21
[игнорируется]
Andre3www [игнорируется] 

можно.
Сможете скинуть скрипт решения?

И как еще перевезти из текста цифры в числовой формат?
т.е. 1строка - текст
2строка - дата
3строка - числа
4строка - числа
...
Рейтинг: 0 / 0
Извлечь ФИО и дату рождения
    #40138543
Andrey77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andre3www  27.03.2024, 11:33
[игнорируется]
Andrey77  27.03.2024, 11:21
[игнорируется]
Andre3www [игнорируется] 

можно.
Сможете скинуть скрипт решения?

И как еще перевезти из текста цифры в числовой формат?
т.е. 1строка - текст
2строка - дата
3строка - числа
4строка - числа
предлагаю изучить документацию и сделать самому :) это будет очень полезно и повысит навыки
...
Рейтинг: 0 / 0
Извлечь ФИО и дату рождения
    #40138546
Andre3www
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey77  27.03.2024, 11:55
[игнорируется]
Andre3www  27.03.2024, 11:33
[игнорируется]
Andrey77  27.03.2024, 11:21
[игнорируется]
Andre3www [игнорируется] 

можно.
Сможете скинуть скрипт решения?

И как еще перевезти из текста цифры в числовой формат?
т.е. 1строка - текст
2строка - дата
3строка - числа
4строка - числа
предлагаю изучить документацию и сделать самому :) это будет очень полезно и повысит навыки
Сделал 1,2 и 4 пункт:
3-й пункт не могу сообразить? ((

select S
regexp_substr(S, '([^;]+)') as ФИО
,to_date(regexp_substr(S, '[0-9]{2}.[0-9]{2}.[0-9]{4}'), 'DD.MM.YYYY') as ДАТА_РОЖДЕНИЯ
,to_number(regexp_substr((S.............................. as ИНН
,regexp_substr(S, '([^;]+$)') as СНИЛС
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Извлечь ФИО и дату рождения
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Читали форум (4): Анонимы (4)
Пользователи онлайн (7): Анонимы (5), Yandex Bot 2 мин., Bing Bot 4 мин.
x
x
Закрыть


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