Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
 Re: Как разделить ФИО на Ф, И, О?  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
Alexey I Sereda
,regexp_replace('Фамилия Имя Отчество','(.*) (.*) (.*)','\1') as f
...
Oracle 10.2.0.2 (в 9.2.0.5 говорят тоже работало)
врут :)
15 апр 09, 17:13    [7069001]     Ответить | Цитировать Сообщить модератору
 Re: Как разделить ФИО на Ф, И, О?  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 8544
Alexey I Sereda
По поводу регулярных выражений хорошая и небольшая статья:
http://www.interface.ru/home.asp?artId=19744
Первоисточник перевода этой статьи на русский язык
15 апр 09, 18:04    [7069427]     Ответить | Цитировать Сообщить модератору
 Re: Как разделить ФИО на Ф, И, О?  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 122148
SQL*Plus
Alexey I Sereda
По поводу регулярных выражений хорошая и небольшая статья:
http://www.interface.ru/home.asp?artId=19744
Первоисточник перевода этой статьи на русский язык


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

Немного удивило правда и отсутствие упоминания переводчика в Оракловском варианте статьи,
это общеупотребительная практика ? ИМХО его наличие могло бы затруднить
пиратство, хотя....
15 апр 09, 18:18    [7069514]     Ответить | Цитировать Сообщить модератору
 Re: Как разделить ФИО на Ф, И, О?  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 8544
dmidek
SQL*Plus
Alexey I Sereda
По поводу регулярных выражений хорошая и небольшая статья:
http://www.interface.ru/home.asp?artId=19744
Первоисточник перевода этой статьи на русский язык

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

Всё вполне в гадостном "Интерфейс"-стиле... :-(
15 апр 09, 18:25    [7069538]     Ответить | Цитировать Сообщить модератору
 Re: Как разделить ФИО на Ф, И, О?  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 58435
Ещё про ФИО :)
Задумал найти те фамилии, где все буквы повторяются не менее 2 раз.
И нашёл:
Фамилия
ажажа
дейдей
дядя
колокол
кононко
лала
запрос, конечно, несложный, приводить не стал.
18 май 09, 15:10    [7193845]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Как разделить ФИО на Ф, И, О?  [new]
копосов н.в.
Guest
/* 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;
/
13 ноя 10, 13:54    [9773313]     Ответить | Цитировать Сообщить модератору
 Re: Как разделить ФИО на Ф, И, О?  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15504
копосов н.в.,

set serveroutput on
exec dbms_output.put_line(regexp_replace('регулярусы вполне реализованы в sql','в sql','как в sql, так и в pl/sql :)'));
13 ноя 10, 14:11    [9773435]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Как разделить ФИО на Ф, И, О?  [new]
leone-
Member

Откуда:
Сообщений: 203
Добрый ночи.
Что нужно дописать чтоб корректно разбивало на Ф И О ДР, если нет О
Понимаю что нужно искать О до цифры.

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

Спасибо.
5 окт 18, 22:57    [21696852]     Ответить | Цитировать Сообщить модератору
 Re: Как разделить ФИО на Ф, И, О?  [new]
MirnyiAtom
Member

Откуда:
Сообщений: 35
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
8 окт 18, 07:54    [21697674]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Как разделить ФИО на Ф, И, О?  [new]
VDeltsov
Member

Откуда:
Сообщений: 4
Выкладываю доработанный вариант без регулярных выражений.

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

Предполагается, что двойные/тройные пробелы заменены на одинарные и сделан 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
25 ноя 21, 19:56    [22400915]     Ответить | Цитировать Сообщить модератору
 Re: Как разделить ФИО на Ф, И, О?  [new]
Sah
Member

Откуда: Moscow
Сообщений: 263
Ну и в догонку:
Де Сиего Наталья Дмитриевна
26 ноя 21, 09:12    [22401077]     Ответить | Цитировать Сообщить модератору
 Re: Как разделить ФИО на Ф, И, О?  [new]
Агрох
Member

Откуда:
Сообщений: 136
Был у меня начальник один... Реальное ФИО выдавать не буду, но правильно оно записывалось так:
Мама Юсупов Кайрат Мамат Ахматович
Где
Мама Юсупов - фамилия
Кайрат - имя
Мамат Ахматович - отчество.

Для того, чтобы не ломать мозг окружающим он сам чаще всего писал Мамаюсупов Кайрат Маматахматович и не был против чтобы так оно записывалось всеми. Вот как в паспорте было указано не в курсе.
26 ноя 21, 10:40    [22401115]     Ответить | Цитировать Сообщить модератору
 Re: Как разделить ФИО на Ф, И, О?  [new]
dvim
Member

Откуда: Санкт Петербург
Сообщений: 721
Из личного опыта - еще и по гражданству смотрели.
Во многих странах банально нет отчества, потому надо бить на Фамилию и Имя
26 ноя 21, 12:08    [22401180]     Ответить | Цитировать Сообщить модератору
 Re: Как разделить ФИО на Ф, И, О?  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18618
Ну где же Stax с его любимым полным именем Остапа Бендера?
27 ноя 21, 06:27    [22401646]     Ответить | Цитировать Сообщить модератору
 Re: Как разделить ФИО на Ф, И, О?  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 8544
dvim
Из личного опыта - еще и по гражданству смотрели.
Во многих странах банально нет отчества, потому надо бить на Фамилию и Имя

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

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

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

Сообщение было отредактировано: 27 ноя 21, 22:22
27 ноя 21, 22:21    [22401969]     Ответить | Цитировать Сообщить модератору
 Re: Как разделить ФИО на Ф, И, О?  [new]
ASNexus
Member

Откуда: Tula
Сообщений: 210
SQL*Plus
dvim
Из личного опыта - еще и по гражданству смотрели.
Во многих странах банально нет отчества, потому надо бить на Фамилию и Имя

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

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

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


В случае "Абушова Сабина Алам кызы" это точно не поможет (пример в сети нашёл, гражданство РФ наверняка). Здесь можно учитывать идею, что всё что после имени - это и есть отчество. Тогда "Алам кызы" - понимаем, что пол Ж (а "улы" - это М), но только для части граждан РФ, а для других национальностей свои "признаки". Как мне видится, решить задачу ТС можно только обучением нейросети на больших массивах данных (чтобы она реально могла заменить человека, который просто понимает (или не понимает), а что из ФИО есть Ф, И, О), но тема явно за гранью форума Oracle
27 ноя 21, 22:41    [22401974]     Ответить | Цитировать Сообщить модератору
 Re: Как разделить ФИО на Ф, И, О?  [new]
Colt
Member

Откуда:
Сообщений: 72
Вячеслав Любомудров
Ну где же Stax с его любимым полным именем Остапа Бендера?


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

---------------------------
* - Вру, не вспоминается, приходится лезть в педевикию
28 ноя 21, 23:49    [22402339]     Ответить | Цитировать Сообщить модератору
 Re: Как разделить ФИО на Ф, И, О?  [new]
ASNexus
Member

Откуда: Tula
Сообщений: 210
Colt
Вячеслав Любомудров
Ну где же Stax с его любимым полным именем Остапа Бендера?


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


Здесь очевидно (или нет?), что всё, что после первого "де" (и включая его) - это фамилия, а до этого, наверное, имя (ведь отчества у испанцев нет, но надо ещё понимать, что фигурант именно испанец).
29 ноя 21, 00:05    [22402346]     Ответить | Цитировать Сообщить модератору
 Re: Как разделить ФИО на Ф, И, О?  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19924
ASNexus
Здесь очевидно (или нет?), что всё, что после первого "де" (и включая его) - это фамилия

Не човчем.
Насколько помню,
Пабло Диего - церковное и семейное имя
Хосе Франсиско - фамилии дедов по отцовской и материнской линии
далее перечисление многочисленных святых, почитаемых в семье.
29 ноя 21, 01:11    [22402361]     Ответить | Цитировать Сообщить модератору
 Re: Как разделить ФИО на Ф, И, О?  [new]
Агрох
Member

Откуда:
Сообщений: 136
andrey_anonymous
ASNexus
Здесь очевидно (или нет?), что всё, что после первого "де" (и включая его) - это фамилия

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


А разве не Руис-и-Пикассо это фамилия? Руис - фамилия отца, Пикассо - фамилия матери.
Хосе и Франсиско это скорее всего имена дедов.
29 ноя 21, 10:07    [22402421]     Ответить | Цитировать Сообщить модератору
 Re: Как разделить ФИО на Ф, И, О?  [new]
Michael Isaev
Member

Откуда:
Сообщений: 171
Colt
Вячеслав Любомудров
Ну где же Stax с его любимым полным именем Остапа Бендера?


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

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


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

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

Заполняется вручную соответствующими служащими.
29 ноя 21, 11:48    [22402477]     Ответить | Цитировать Сообщить модератору
 Re: Как разделить ФИО на Ф, И, О?  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 58435
Пабло Диего Хосе Франсиско де Паула Хуан Непомусено Мария де лос Ремедиос Сиприано де ла Сантисима Тринидад Мартир Патрисио Руис-и-Пикассо, выйти из строя! Наряд на кухню!
29 ноя 21, 11:49    [22402479]     Ответить | Цитировать Сообщить модератору
 Re: Как разделить ФИО на Ф, И, О?  [new]
Scott Tiger
Member

Откуда: вмваре
Сообщений: 6905
Уже было. А дочка Хуана Хуановича, Рохас Кастильо Кристина Хуановна, в 2018 году поступила в строгановское училище :)
30 ноя 21, 14:48    [22403089]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
Все форумы / Oracle Ответить