Загрузка данных


CREATE OR REPLACE VIEW SH.V_UCH_VSE_SURNAMES AS
WITH t AS (
    SELECT
        REGEXP_SUBSTR(
            REGEXP_REPLACE(
                NAIMEN,
                '^((КПП[[:space:]]+[0-9]+|КПП|ПРЕДПРИНИ[А-ЯЁа-яё]*|ПБОЮЛ|ИП|ЧП|ФЛ|[0-9]+)[[:space:]]+)+',
                '', 1, 0, 'i'
            ),
            '^[А-ЯЁ][А-ЯЁа-яё\-]+'
            || '('
            ||   '[[:space:]]+[А-ЯЁ]\.[[:space:]]*[А-ЯЁ]\.'
            ||  '|[[:space:]]+[А-ЯЁ][А-ЯЁа-яё\-]+'
            ||     '([[:space:]]+[А-ЯЁ][А-ЯЁа-яё\-]+)?'
            ||     '([[:space:]]+(ОГЛЫ|ОГЛУ|КЫЗЫ|УГЛИ|УУЛУ|ГИРЕЙ|ХАН|БЕК|БАЙ))?'
            || ')'
        ) AS FIO
    FROM SH.UCH_VSE
    WHERE
        NAIMEN IS NOT NULL
        AND NOT REGEXP_LIKE(
            NAIMEN,
            '(ООО|ОАО|ЗАО|АКБ|КБ|ЖСК|ТСЖ|ФОНД|БАНК|КОМПАНИЯ|ПРЕДПРИЯТИЕ|ОБЩЕСТВО|СОЮЗ|ВКЛАДЫ|ГРАЖДАН|МИН?ФИН'
            || '|АДМИНИСТРА[А-ЯЁа-яё]*'
            || '|УПРАВЛЕНИ[А-ЯЁа-яё]*'
            || '|ДЕПАРТАМЕНТ[А-ЯЁа-яё]*'
            || '|КОМИТЕТ[А-ЯЁа-яё]*'
            || '|МИНИСТЕРСТВ[А-ЯЁа-яё]*'
            || '|-Ф-Л|-ФИЛИАЛ|ФИЛИАЛ|Ф-Л'
            || ')',
            'i'
        )
)
SELECT DISTINCT
    REGEXP_SUBSTR(FIO, '^[^[:space:]]+') AS SURNAME
FROM t
WHERE
    FIO IS NOT NULL
    AND REGEXP_LIKE(FIO, '^[А-ЯЁ]', 'c')
    AND REGEXP_LIKE(FIO, '[[:space:]]', 'c')
    AND LENGTH(FIO) BETWEEN 6 AND 100
    AND LENGTH(REGEXP_SUBSTR(FIO, '^[^[:space:]]+')) >= 3
    AND NOT REGEXP_LIKE(REGEXP_SUBSTR(FIO, '^[^[:space:]]+'), '^[А-ЯЁ]{2,3}$', 'c')
    AND REGEXP_LIKE(
        UPPER(REGEXP_SUBSTR(FIO, '^[^[:space:]]+')),
        '(ОВ|ЕВ|ЁВ|ИН|ЫН|ИЙ|ЫЙ|ОЙ|СКИЙ|ЦКИЙ|СКАЯ|ЦКАЯ|'
        || 'ЕНКО|УК|ЮК|ЧУК|ЩУК|АК|ЯК|ИК|ИЧ|АЯ|ЯЯ|'
        || 'ШВИЛИ|ДЗЕ|ИДЗЕ|ЯН|ЯНЦ|ОГЛЫ|ОГЛУ|КЫЗЫ|УГЛИ|УУЛУ|'
        || 'ГИРЕЙ|ХАН|БЕК|БАЙ|ЕЦ|ЕНОК|КО|ОВА|ЕВА|ИНА|ЫНА|ЁВА|'
        || 'О|А|Е|И|У|Ю|Я)$',
        'i'
    );