Добро пожаловать в форум, 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

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

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


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

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

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

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

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

Откуда: Запорожье
Сообщений: 49175
Ещё про ФИО :)
Задумал найти те фамилии, где все буквы повторяются не менее 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)
Сообщений: 15437
копосов н.в.,

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

Откуда:
Сообщений: 24
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]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
Все форумы / Oracle Ответить