powered by simpleCommunicator - 2.0.29     © 2024 Programmizd 02
Map
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как разделить ФИО на Ф, И, О?
48 сообщений из 48, показаны все 2 страниц
Как разделить ФИО на Ф, И, О?
    #35932104
Павел Гужанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В поле таблицы содержится ФИО человека. Мне нужно в результате SQL запроса получить отдельные поля Фамилия, Имя, Отчество. Как это сделать?
...
Рейтинг: 0 / 0
Как разделить ФИО на Ф, И, О?
    #35932108
semenar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Решается стандартно instr+substr.
...
Рейтинг: 0 / 0
Как разделить ФИО на Ф, И, О?
    #35932110
semenar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
когда-то давно писал:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
FUNCTION RETURN_FIO (C_VALUE VARCHAR2,N_CHECK NUMBER) RETURN VARCHAR2 IS
  V_VAR NUMBER;
  C_OUT VARCHAR2( 130 ) DEFAULT NULL;
  BEGIN
   IF N_CHECK =  1  THEN
    C_OUT := SUBSTR(C_VALUE, 1 ,INSTR(C_VALUE,' ')); --ФАМИЛИЯ--
   END IF;
   IF N_CHECK =  2  THEN
    C_OUT := SUBSTR(C_VALUE,INSTR(C_VALUE,' ', 1 , 1 )+ 1 ,INSTR(C_VALUE,' ', 1 , 2 )-INSTR(C_VALUE,' ', 1 , 1 )- 1 ); --ИМЯ--
   END IF;
   IF N_CHECK =  3  THEN
    C_OUT := SUBSTR(C_VALUE,INSTR(C_VALUE,' ', 1 , 2 )+ 1 );  --ОТЧЕСТВО--
   END IF;
   RETURN TRIM(C_OUT);
  END;
...
Рейтинг: 0 / 0
Как разделить ФИО на Ф, И, О?
    #35932115
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для любителей программно разбивать строку ФИО на фамилию, имя и отчество пример:
"Ханмамедова Дуня Тофик гизы"
или
"Ханмамедова Дуня Тофик-гизы"

- кто из них как пишет.
...
Рейтинг: 0 / 0
Как разделить ФИО на Ф, И, О?
    #35932119
SQLap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Павел ГужановВ поле таблицы содержится ФИО человека. Мне нужно в результате SQL запроса получить отдельные поля Фамилия, Имя, Отчество. Как это сделать?

Код: plaintext
1.
2.
3.
select substr('Иванов Иван Иванович',  1 , instr('Иванов Иван Иванович', ' ')),
       substr('Иванов Иван Иванович', instr('Иванов Иван Иванович', ' ', 2 ), instr('Иванов Иван Иванович', ' ', 2 ) - 1 ),
       substr('Иванов Иван Иванович', -instr('Иванов Иван Иванович', ' ',  2 ) - 1 )
 from dual

на Тофик газах не работает правда(
...
Рейтинг: 0 / 0
Как разделить ФИО на Ф, И, О?
    #35932172
Павел Гужанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо
...
Рейтинг: 0 / 0
Как разделить ФИО на Ф, И, О?
    #35932207
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Row#FAM||''||IMA||''||OTH1Абасов Фархад Фикрет-Оглы2Аблязов Рустем 3Бахшалиев Афик Зульфали оглы4Булина-Зыкина Елена Андреевна5Габибов Арзу Камил-оглы6Зейналов Эльмар Джамал_оглы7Исмаилов Заур Абульфат_оглы8Мамедов Эльдар Насиб_оглы9Рагимов Рауф Афис-оглы10Рагимов Рафик Афис-оглы11Самофалов-Зорин Артем Маркович12Сариев Махаббат Эльдар-Оглы13Тагиев Рагим Надир оглы14Тульнова Гюльнара Ахмедага кизы15Ханмамедова Дуня Тофик-гизы16Эль_гуэссаб Любовь Валерьевнакстати, насколько я понял, "Эль_гуэссаб" - фамилия из двух слов, просто всё-таки пришлось вставить "_"
...
Рейтинг: 0 / 0
Как разделить ФИО на Ф, И, О?
    #35932223
SQLap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymxRow#tFAM||''||IMA||''||OTH1tАбасов Фархад Фикрет-Оглы2tАблязов Рустем 3tБахшалиев Афик Зульфали оглы4tБулина-Зыкина Елена Андреевна5tГабибов Арзу Камил-оглы6tЗейналов Эльмар Джамал_оглы7tИсмаилов Заур Абульфат_оглы8tМамедов Эльдар Насиб_оглы9tРагимов Рауф Афис-оглы10tРагимов Рафик Афис-оглы11tСамофалов-Зорин Артем Маркович12tСариев Махаббат Эльдар-Оглы13tТагиев Рагим Надир оглы14tТульнова Гюльнара Ахмедага кизы15tХанмамедова Дуня Тофик-гизы16tЭль_гуэссаб Любовь Валерьевнакстати, насколько я понял, "Эль_гуэссаб" - фамилия из двух слов, просто всё-таки пришлось вставить "_"

Мне почему-то в таких случаях вспоминается голладский футболист Ян Венегоор оф Хесселинк)
...
Рейтинг: 0 / 0
Как разделить ФИО на Ф, И, О?
    #35932227
SQLap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вообще в шикарных системах для хранения ФИО отводится 4 поля минимум.
ФИО, Ф, И и О. Некоторые еще и на падежи не скупятся
...
Рейтинг: 0 / 0
Как разделить ФИО на Ф, И, О?
    #35932239
__vvp_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У нас есть работник Альвард Анвар Али Абдо
И где у него имя, фамилия, отчество?
...
Рейтинг: 0 / 0
Как разделить ФИО на Ф, И, О?
    #35932274
SQLap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__vvp_У нас есть работник Альвард Анвар Али Абдо
И где у него имя, фамилия, отчество?

Во блин, понаехали...
Хотя... Если по дефолту взять пробел как делимитер, то уже кадрам придется решать Анвар-Али он или Али-Абдо
...
Рейтинг: 0 / 0
Как разделить ФИО на Ф, И, О?
    #35932285
Фотография Dmitry Arefiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ФИО это СССРное, у других товарищей может быть ИФ, И1И2И3...ИNФ,
И1И2И3...ИN и прочие вариации :)
...
Рейтинг: 0 / 0
Как разделить ФИО на Ф, И, О?
    #35932287
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Павел Гужанов,

Бендер Остап Сулейман -Берта-Мария Ибрагимович
...
Рейтинг: 0 / 0
Как разделить ФИО на Ф, И, О?
    #35932366
tru55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stax..Павел Гужанов,

Бендер Остап Сулейман -Берта-Мария Ибрагимович

Да, я тоже его сразу вспоминаю в подобных случаях :)
Только мне почему-то казалось, что ...Мария Бендер-бей :)
...
Рейтинг: 0 / 0
Как разделить ФИО на Ф, И, О?
    #35932394
Mexico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и как на счеть двойная фамилия или имя как в испано-говорящи страна?

кстати не навижу constraint в поле "Отчество" NOT NULL :)
----------------------------------------------
Sorry, my Russian is not as good as my Spanish
...
Рейтинг: 0 / 0
Как разделить ФИО на Ф, И, О?
    #35932413
Фотография dmidek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mexicoи как на счеть двойная фамилия или имя как в испано-говорящи страна?

кстати не навижу constraint в поле "Отчество" NOT NULL :)


Фамилия ? Хансен
Имя ? Билл
Отчество ? Я не знаю....у него нет отчества
(С) Осенний марафон
...
Рейтинг: 0 / 0
Как разделить ФИО на Ф, И, О?
    #35932423
SQLap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dmidekMexicoи как на счеть двойная фамилия или имя как в испано-говорящи страна?

кстати не навижу constraint в поле "Отчество" NOT NULL :)


Фамилия ? Хансен
Имя ? Билл
Отчество ? Я не знаю....у него нет отчества
(С) Осенний марафон


Кадровики придумают)) Как обойти констрейнт)))
...
Рейтинг: 0 / 0
Как разделить ФИО на Ф, И, О?
    #35932550
Mexico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQLapdmidekMexicoи как на счеть двойная фамилия или имя как в испано-говорящи страна?

кстати не навижу constraint в поле "Отчество" NOT NULL :)


Фамилия ? Хансен
Имя ? Билл
Отчество ? Я не знаю....у него нет отчества
(С) Осенний марафон


Кадровики придумают)) Как обойти констрейнт)))

Главное, в Домовой книги у меня : Отчество : НЕТ, думаю был лучше Нетович!!!
...
Рейтинг: 0 / 0
Как разделить ФИО на Ф, И, О?
    #35932564
-=APS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__vvp_У нас есть работник Альвард Анвар Али Абдо
И где у него имя, фамилия, отчество?
Аналогичная ситуация.. Принимающая система когда-то была заточена под 3 реквизита: фамилия, имя, отчество. А поступают данные в одном поле в произвольном порядке и часто в реальной жизни приходится регистрировать для обслуживания людей, у которых с ФИО не все так однозначно. Например, Dong Canh Trung (Вьетнам), или Aza Ocana Emiliano de la Cruz (Испания) и т.п. Правда, бухгалтерия поднялась на более высокий уровень абстракции и заявила, что им пофигу, что там имя, а что - фамилия, и где они хранятся в БД. Для них важно, чтобы реквизиты в платежное поручение попадали без искажений :)
...
Рейтинг: 0 / 0
Как разделить ФИО на Ф, И, О?
    #35932683
Фотография Dmitry Arefiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=APS=-Для них важно, чтобы реквизиты в платежное поручение попадали без искажений :)
Главное, что бы совпадало с удостоверяющим личность документом и прочими
государственными записями :)
...
Рейтинг: 0 / 0
Как разделить ФИО на Ф, И, О?
    #35932902
citrix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сразу вспомнилась знакомая девочка Марина Елена Николаевна... в фамилии Марина ударение на последний слог:-)

Нам нужен мир. Желательно весь.
...
Рейтинг: 0 / 0
Как разделить ФИО на Ф, И, О?
    #35932959
valerytin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
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.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
function getw(
-- возврат no-го слова из строки с параметрическим списком разделителей
-- valerytin, hexcept@narod.ru, apr-2006
  p_str varchar2, -- входящая строка
  p_num pls_integer:= 1 , -- слово по счету: >0 - от начала, <0 - с конца
  fstr varchar2:= -- список "пробелов" по умолчанию
   ' ~!@#$%^*()+=;:?,./\|[]{}"<>-_№'||chr( 9 )||chr( 10 )||chr( 13 )||chr( 38 )||chr( 39 )||
   chr( 147 )||chr( 148 )||chr( 171 )||chr( 187 )||chr( 96 )
 ) return varchar2 is
 l_str varchar2( 2000 );
 l_dev char:=chr( 7 ); -- chr(7): возможность не указывать пробел в fstr
begin
 if p_str is null or p_num= 0  then return null; end if;
 l_str:=
  ltrim(translate(p_str,l_dev||fstr,rpad(l_dev, 80 ,l_dev)),l_dev);
 if l_str is null then return null; end if;
 if p_num> 0  then -- если ищем от начала строки
  l_str:=ltrim(l_str,l_dev)||l_dev;
  for i in  2 ..p_num loop
   l_str:=ltrim(substr(l_str,instr(l_str,l_dev)),l_dev);
  end loop;
  return substr(l_str, 1 ,instr(l_str,l_dev)- 1 );
 else -- ищем с конца
  l_str:=l_dev||rtrim(l_str,l_dev);
  for i in  2 ..-p_num loop
   l_str:=rtrim(substr(l_str, 1 ,instr(l_str,l_dev,- 1 )),l_dev);
  end loop;
  return substr(l_str,instr(l_str,l_dev,- 1 )+ 1 );
 end if;
 return null;
end getw;
--------------------------------------------------------------------------------
select
 getw(s, 1 ,' ') fa,
 getw(s, 2 ,' ') im,
 decode(getw(s, 2 ,' '),null,null,
  decode(getw(s, 3 ,' '),null,null,
  trim(substr(' '||s||' ',instr(' '||s||' ',' '||getw(s, 3 ,' ')||' '))))) ot
from
(
 select '      Абасов Фархад Фикрет-Оглы' s from dual union all
 select 'Аблязов Рустем ' s from dual union all
 select 'Бахшалиев Афик Зульфали оглы' s from dual union all
 select 'Булина-Зыкина   Елена Андреевна          ' s from dual union all
 select 'Эль_гуэссаб Любовь Валерьевна' s from dual union all
 select 'Али-Абдо' s from dual union all
 select 'Фамилиев Али-Абдо' s from dual union all
 select 'Фамилиев Али-Абдо Отчествевич' s from dual union all
 select 'Фамилиев Али-Абдо Отчествевич + бла-бла бла' s from dual union all
 select 'Бендер Остап Сулейман -Берта-Мария Ибрагимович ' s from dual
)
...
Рейтинг: 0 / 0
Как разделить ФИО на Ф, И, О?
    #35933146
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQLap
Код: plaintext
1.
2.
3.
select substr('Иванов Иван Иванович',  1 , instr('Иванов Иван Иванович', ' ')),
       substr('Иванов Иван Иванович', instr('Иванов Иван Иванович', ' ', 2 ), instr('Иванов Иван Иванович', ' ', 2 ) - 1 ),
       substr('Иванов Иван Иванович', -instr('Иванов Иван Иванович', ' ',  2 ) - 1 )
 from dual

на Тофик газах не работает правда(
Оно и не "на Тофик газах" работает только на 1/3... :-)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
select '"'||substr('Иванов Иван Иванович',  1 , instr('Иванов Иван Иванович', ' '))||'"' AS f,
       '"'||substr('Иванов Иван Иванович', instr('Иванов Иван Иванович', ' ', 2 ), instr('Иванов Иван Иванович', ' ', 2 ) - 1 )||'"' AS i,
       '"'||substr('Иванов Иван Иванович', -instr('Иванов Иван Иванович', ' ',  2 ) - 1 )||'"' AS o
from dual

F         I        O
--------- -------- ----------
"Иванов " " Иван " "Иванович"
       ^   ^    ^
ТщательнЕе надо кодировать...
...
Рейтинг: 0 / 0
Как разделить ФИО на Ф, И, О?
    #35933211
SQLap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL*Plus
ТщательнЕе надо кодировать...

Согласен, повинен смерти
Код: plaintext
1.
2.
3.
select substr('Иванов Иван Иванович',  1 , instr('Иванов Иван Иванович', ' ') - 1 ) F,
       substr('Иванов Иван Иванович', instr('Иванов Иван Иванович', ' ', 2 ) +  1 , instr('Иванов Иван Иванович', ' ', 2 ) - 3 ) I,
       substr('Иванов Иван Иванович', -instr('Иванов Иван Иванович', ' ',  2 ) - 1 ) O
 from dual
...
Рейтинг: 0 / 0
Как разделить ФИО на Ф, И, О?
    #35934112
Alexey I Sereda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
select 'Фамилия Имя Отчество'
,regexp_replace('Фамилия Имя Отчество','(.*) (.*) (.*)','\1') as f
,regexp_replace('Фамилия Имя Отчество','(.*) (.*) (.*)','\2') as i
,regexp_replace('Фамилия Имя Отчество','(.*) (.*) (.*)','\3')as o
from dual

Oracle 10.2.0.2 (в 9.2.0.5 говорят тоже работало)
По поводу регулярных выражений хорошая и небольшая статья:
http://www.interface.ru/home.asp?artId=19744
...
Рейтинг: 0 / 0
Как разделить ФИО на Ф, И, О?
    #35934157
Jannny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey I Sereda ,regexp_replace('Фамилия Имя Отчество','(.*) (.*) (.*)','\1') as f
...
Oracle 10.2.0.2 (в 9.2.0.5 говорят тоже работало)врут :)
...
Рейтинг: 0 / 0
Как разделить ФИО на Ф, И, О?
    #35934311
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey I SeredaПо поводу регулярных выражений хорошая и небольшая статья:
http://www.interface.ru/home.asp?artId=19744 Первоисточник перевода этой статьи на русский язык
...
Рейтинг: 0 / 0
Как разделить ФИО на Ф, И, О?
    #35934342
Фотография dmidek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL*PlusAlexey I SeredaПо поводу регулярных выражений хорошая и небольшая статья:
http://www.interface.ru/home.asp?artId=19744 Первоисточник перевода этой статьи на русский язык

ИМХО со стороны interface выглядит отвратительно - никакой ссылки на первопубликацию,
а автор статьи скрыт среди рекламных баннеров где то внизу, бррр :-( :-(

Немного удивило правда и отсутствие упоминания переводчика в Оракловском варианте статьи,
это общеупотребительная практика ? ИМХО его наличие могло бы затруднить
пиратство, хотя....
...
Рейтинг: 0 / 0
Как разделить ФИО на Ф, И, О?
    #35934353
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dmidekSQL*PlusAlexey I SeredaПо поводу регулярных выражений хорошая и небольшая статья:
http://www.interface.ru/home.asp?artId=19744 Первоисточник перевода этой статьи на русский язык
ИМХО со стороны interface выглядит отвратительно - никакой ссылки на первопубликацию,
а автор статьи скрыт среди рекламных баннеров где то внизу, бррр :-( :-(
Всё вполне в гадостном "Интерфейс"-стиле... :-(
...
Рейтинг: 0 / 0
Как разделить ФИО на Ф, И, О?
    #35991865
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё про ФИО :)
Задумал найти те фамилии, где все буквы повторяются не менее 2 раз.
И нашёл:
Фамилияажажадейдейдядяколоколкононколалазапрос, конечно, несложный, приводить не стал.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Как разделить ФИО на Ф, И, О?
    #36953913
Код: plaintext
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.
/* Formatted on 2010/11/13 13:38 (Formatter Plus v4.8.8) */
CREATE OR REPLACE FUNCTION fio (in_fio IN VARCHAR2, in_order IN NUMBER)
   RETURN VARCHAR2
IS
   v_fio   VARCHAR2 ( 100 );
   f       VARCHAR2 ( 100 );
   i       VARCHAR2 ( 100 );
   o       VARCHAR2 ( 100 );
BEGIN
   v_fio := '...';

   IF (in_fio IS NOT NULL)
   THEN
      SELECT REGEXP_REPLACE (in_fio, '(.*) (.*) (.*)', '\1')
        INTO f
        FROM DUAL;

      SELECT REGEXP_REPLACE (in_fio, '(.*) (.*) (.*)', '\2')
        INTO i
        FROM DUAL;

      SELECT REGEXP_REPLACE (in_fio, '(.*) (.*) (.*)', '\3')
        INTO o
        FROM DUAL;

      IF (in_order =  0 )
      THEN
         v_fio :=
                 f || ' ' || SUBSTR (i,  1 ,  1 ) || '.' || SUBSTR (o,  1 ,  1 )
                 || '.';
      ELSE
         v_fio := SUBSTR (i,  1 ,  1 ) || '.' || SUBSTR (o,  1 ,  1 ) || '. ' || f;
      END IF;
   END IF;

   RETURN v_fio;
END fio;
/
...
Рейтинг: 0 / 0
Как разделить ФИО на Ф, И, О?
    #36953965
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
копосов н.в.,

Код: plaintext
1.
set serveroutput on
exec dbms_output.put_line(regexp_replace('регулярусы вполне реализованы в sql','в sql','как в sql, так и в pl/sql :)'));
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Как разделить ФИО на Ф, И, О?
    #39713827
leone-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый ночи.
Что нужно дописать чтоб корректно разбивало на Ф И О ДР, если нет О
Понимаю что нужно искать О до цифры.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
with s as (select 'ЛЯШКО СТЕЛЛА ЛЕОНИДОВНА 10.06.1968 г.р.' ttt from dual
 union all select 'КУДРЯВЦЕВА ГАЛИНА ВИКТОРОВНА 10.05.1968 г.р.' ttt from dual
 union all select 'ПОТАТОСОВ АНДРЕЙ МИХАЙЛОВИЧ 24.06.1969 г.р.' ttt from dual
 union all select 'Сидоров Антон 24.06.1969 г.р.' ttt from dual
 union all select 'ДАГУРОВ ОЛЕГ ВАЛЕРЬЕВИЧ 27.02.1973 г.р.' ttt from dual
 union all select 'ЧАЛОВ СЕРГЕЙ АЛЕКСАНДРОВИЧ 25.07.1990 г.р.' ttt from dual
 union all select 'АЩЕУЛОВ КОНСТАНТИН ВИКТОРОВИЧ 17.10.1974 г.р.' ttt from dual
 union all select 'ИВАНОВ Семен 17.10.1974 г.р.' ttt from dual
)
select 
 regexp_replace(ttt,'(.*) (.*) (.*) (.*) (.*)','\1') f1 
,regexp_replace(ttt,'(.*) (.*) (.*) (.*) (.*)','\2') i1
,regexp_replace(ttt,'(.*) (.*) (.*) (.*) (.*)','\3') o1
,regexp_substr(ttt,'\d{2}\.\d{2}\.\d{4}') dr
,regexp_substr(ttt,'[^ ]+',1,1) f2
,regexp_substr(ttt,'[^ ]+',1,2) i2
,regexp_substr(ttt,'[^ ]+',1,3) o2
,regexp_replace(ttt,' (.*)') f3 
,regexp_replace(ttt,' (.*)|^[^ ]* ') i3 
,regexp_replace(ttt,'(.*) ') o3
,regexp_substr(ttt,'(.*) ') o3
from s


Спасибо.
...
Рейтинг: 0 / 0
Как разделить ФИО на Ф, И, О?
    #39714191
MirnyiAtom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
regexp_substr(s.ttt,'[А-Яа-яЁё]*',1,1) as f,
regexp_substr(s.ttt,'[А-Яа-яЁё]*',1,3) as i,
regexp_substr(s.ttt,'[А-Яа-яЁё]*',1,5) as o,
regexp_substr(s.ttt,'[1-3][0-9].[0-1]?[0-9].[1-2][0-9]{3} г.р.',1,1) as bt
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Как разделить ФИО на Ф, И, О?
    #40115002
VDeltsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Выкладываю доработанный вариант без регулярных выражений.

Фамилия - до первого пробела.
Имя - от первого пробела до второго.
Отчество - всё, что после второго пробела.

Предполагается, что двойные/тройные пробелы заменены на одинарные и сделан trim.



Результат Фамилия:
  • ЛЯШКО
  • Сидоров
  • Нуралиев
  • Иванов
Имя:
  • СТЕЛЛА
  • Антон
  • Рашид
  • <NULL>
Отчество:
  • ЛЕОНИДОВНА
  • <NULL>
  • Тельман Оглы
  • <NULL>
with t as (select 'ЛЯШКО СТЕЛЛА ЛЕОНИДОВНА' FIO from dual
union all select 'Сидоров Антон' FIO from dual
union all select 'Нуралиев Рашид Тельман Оглы' FIO from dual
union all select 'Иванов' FIO from dual
)
select t.*, substr(t.FIO, 1, instr(t.FIO || ' ', ' ') -1) F,
substr(t.FIO, instr(t.FIO || ' ', ' ') +1,instr(t.FIO || ' ', ' ', instr(t.FIO || ' ', ' ')+1) - instr(t.FIO || ' ', ' ')) I,
substr(t.FIO, instr(t.FIO || ' ', ' ',instr(t.FIO || ' ', ' ')+1)+1) O
from t
...
Рейтинг: 0 / 0
Как разделить ФИО на Ф, И, О?
    #40115127
Sah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и в догонку:
Де Сиего Наталья Дмитриевна
...
Рейтинг: 0 / 0
Как разделить ФИО на Ф, И, О?
    #40115151
Агрох
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Был у меня начальник один... Реальное ФИО выдавать не буду, но правильно оно записывалось так:
Мама Юсупов Кайрат Мамат Ахматович
Где
Мама Юсупов - фамилия
Кайрат - имя
Мамат Ахматович - отчество.

Для того, чтобы не ломать мозг окружающим он сам чаще всего писал Мамаюсупов Кайрат Маматахматович и не был против чтобы так оно записывалось всеми. Вот как в паспорте было указано не в курсе.
...
Рейтинг: 0 / 0
Как разделить ФИО на Ф, И, О?
    #40115190
dvim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из личного опыта - еще и по гражданству смотрели.
Во многих странах банально нет отчества, потому надо бить на Фамилию и Имя
...
Рейтинг: 0 / 0
Как разделить ФИО на Ф, И, О?
    #40115421
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну где же Stax с его любимым полным именем Остапа Бендера?
...
Рейтинг: 0 / 0
Как разделить ФИО на Ф, И, О?
    #40115580
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dvim
Из личного опыта - еще и по гражданству смотрели.
Во многих странах банально нет отчества, потому надо бить на Фамилию и Имя

И гражданство в этом случае не является определяющим признаком.

В 1990-х я лично видел российский паспорт человека, которого зовут Андрис Петуш.
Отчества не было.

Но если отчество есть, оно может помочь при определении (вводе) пола:
Все мужские отчества заканчиваются на 'Ч', а женские - на 'А'.
...
Рейтинг: 0 / 0
Как разделить ФИО на Ф, И, О?
    #40115584
ASNexus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SQL*Plus
dvim
Из личного опыта - еще и по гражданству смотрели.
Во многих странах банально нет отчества, потому надо бить на Фамилию и Имя

И гражданство в этом случае не является определяющим признаком.

В 1990-х я лично видел российский паспорт человека, которого зовут Андрис Петуш.
Отчества не было.

Но если отчество есть, оно может помочь при определении (вводе) пола:
Все мужские отчества заканчиваются на 'Ч', а женские - на 'А'.


В случае "Абушова Сабина Алам кызы" это точно не поможет (пример в сети нашёл, гражданство РФ наверняка). Здесь можно учитывать идею, что всё что после имени - это и есть отчество. Тогда "Алам кызы" - понимаем, что пол Ж (а "улы" - это М), но только для части граждан РФ, а для других национальностей свои "признаки". Как мне видится, решить задачу ТС можно только обучением нейросети на больших массивах данных (чтобы она реально могла заменить человека, который просто понимает (или не понимает), а что из ФИО есть Ф, И, О), но тема явно за гранью форума Oracle
...
Рейтинг: 0 / 0
Как разделить ФИО на Ф, И, О?
    #40115758
Colt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав Любомудров
Ну где же Stax с его любимым полным именем Остапа Бендера?


В связи с задачей разбиения ФИО на три части сразу вспоминается* полное имя Пабло Пикассо:
Пабло Диего Хосе Франсиско де Паула Хуан Непомусено Мария де лос Ремедиос Сиприано де ла Сантисима Тринидад Мартир Патрисио Руис-и-Пикассо

---------------------------
* - Вру, не вспоминается, приходится лезть в педевикию
...
Рейтинг: 0 / 0
Как разделить ФИО на Ф, И, О?
    #40115763
ASNexus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Colt
Вячеслав Любомудров
Ну где же Stax с его любимым полным именем Остапа Бендера?


В связи с задачей разбиения ФИО на три части сразу вспоминается* полное имя Пабло Пикассо:
Пабло Диего Хосе Франсиско де Паула Хуан Непомусено Мария де лос Ремедиос Сиприано де ла Сантисима Тринидад Мартир Патрисио Руис-и-Пикассо


Здесь очевидно (или нет?), что всё, что после первого "де" (и включая его) - это фамилия, а до этого, наверное, имя (ведь отчества у испанцев нет, но надо ещё понимать, что фигурант именно испанец).
...
Рейтинг: 0 / 0
Как разделить ФИО на Ф, И, О?
    #40115767
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ASNexus
Здесь очевидно (или нет?), что всё, что после первого "де" (и включая его) - это фамилия

Не човчем.
Насколько помню,
Пабло Диего - церковное и семейное имя
Хосе Франсиско - фамилии дедов по отцовской и материнской линии
далее перечисление многочисленных святых, почитаемых в семье.
...
Рейтинг: 0 / 0
Как разделить ФИО на Ф, И, О?
    #40115802
Агрох
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous
ASNexus
Здесь очевидно (или нет?), что всё, что после первого "де" (и включая его) - это фамилия

Не човчем.
Насколько помню,
Пабло Диего - церковное и семейное имя
Хосе Франсиско - фамилии дедов по отцовской и материнской линии
далее перечисление многочисленных святых, почитаемых в семье.


А разве не Руис-и-Пикассо это фамилия? Руис - фамилия отца, Пикассо - фамилия матери.
Хосе и Франсиско это скорее всего имена дедов.
...
Рейтинг: 0 / 0
Как разделить ФИО на Ф, И, О?
    #40115834
Michael Isaev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Colt
Вячеслав Любомудров
Ну где же Stax с его любимым полным именем Остапа Бендера?


В связи с задачей разбиения ФИО на три части сразу вспоминается* полное имя Пабло Пикассо:
Пабло Диего Хосе Франсиско де Паула Хуан Непомусено Мария де лос Ремедиос Сиприано де ла Сантисима Тринидад Мартир Патрисио Руис-и-Пикассо

---------------------------
* - Вру, не вспоминается, приходится лезть в педевикию


Уже давно придумано

Полное имя: Пабло Диего Хосе Франсиско де Паула Хуан Непомусено Мария де лос Ремедиос Сиприано де ла Сантисима Тринидад Мартир Патрисио Руис-и-Пикассо
Первое имя: Пабло
Средние имена: Диего Хосе Франсиско де Паула Хуан Непомусено Мария де лос Ремедиос Сиприано де ла Сантисима Тринидад Мартир Патрисио
Последнее имя: Руис-и-Пикассо
Имя для документов: Пабло Пикассо

Заполняется вручную соответствующими служащими.
...
Рейтинг: 0 / 0
Как разделить ФИО на Ф, И, О?
    #40115836
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пабло Диего Хосе Франсиско де Паула Хуан Непомусено Мария де лос Ремедиос Сиприано де ла Сантисима Тринидад Мартир Патрисио Руис-и-Пикассо, выйти из строя! Наряд на кухню!
...
Рейтинг: 0 / 0
Как разделить ФИО на Ф, И, О?
    #40116167
Фотография Scott Tiger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уже было . А дочка Хуана Хуановича, Рохас Кастильо Кристина Хуановна, в 2018 году поступила в строгановское училище :)
...
Рейтинг: 0 / 0
48 сообщений из 48, показаны все 2 страниц
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как разделить ФИО на Ф, И, О?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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