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


WITH 
opf_all AS (
  SELECT 'ООО'  AS opf FROM dual UNION ALL
  SELECT 'ОАО'  FROM dual UNION ALL
  SELECT 'ЗАО'  FROM dual UNION ALL
  SELECT 'ПАО'  FROM dual UNION ALL
  SELECT 'АО'   FROM dual UNION ALL
  SELECT 'НАО'  FROM dual UNION ALL
  SELECT 'ТОО'  FROM dual UNION ALL
  SELECT 'ИП'   FROM dual UNION ALL
  SELECT 'НКО'  FROM dual UNION ALL
  SELECT 'ФГУП' FROM dual UNION ALL
  SELECT 'МУП'  FROM dual UNION ALL
  SELECT 'ГУП'  FROM dual UNION ALL
  SELECT 'ГБУ'  FROM dual UNION ALL
  SELECT 'ГКУ'  FROM dual UNION ALL
  SELECT 'ГАУ'  FROM dual UNION ALL
  SELECT 'АНО'  FROM dual UNION ALL
  SELECT 'ПК'   FROM dual UNION ALL
  SELECT 'СПК'  FROM dual UNION ALL
  SELECT 'КФХ'  FROM dual UNION ALL
  SELECT 'РПО'  FROM dual UNION ALL
  SELECT 'СНТ'  FROM dual UNION ALL
  SELECT 'ТСЖ'  FROM dual UNION ALL
  SELECT 'ЖСК'  FROM dual UNION ALL
  SELECT 'АКБ'  FROM dual UNION ALL
  SELECT 'КБ'   FROM dual UNION ALL
  SELECT 'Общество[[:space:]]+с[[:space:]]+ограниченной[[:space:]]+ответственностью' FROM dual UNION ALL
  SELECT 'Акционерное[[:space:]]+общество' FROM dual UNION ALL
  SELECT 'Публичное[[:space:]]+акционерное[[:space:]]+общество' FROM dual UNION ALL
  SELECT 'Закрытое[[:space:]]+акционерное[[:space:]]+общество' FROM dual UNION ALL
  SELECT 'Открытое[[:space:]]+акционерное[[:space:]]+общество' FROM dual UNION ALL
  SELECT 'Индивидуальный[[:space:]]+предприниматель' FROM dual UNION ALL
  SELECT 'LLC'  FROM dual UNION ALL
  SELECT 'LTD'  FROM dual UNION ALL
  SELECT 'JSC'  FROM dual UNION ALL
  SELECT 'PJSC' FROM dual UNION ALL
  SELECT 'INC'  FROM dual UNION ALL
  SELECT 'GMBH' FROM dual
),
src AS (
  SELECT INN, NAIMEN
  FROM   SH.UCH_VSE
  WHERE  NAIMEN IS NOT NULL
)
SELECT DISTINCT
       COUNT(*) OVER () AS TOTAL_ROWS,
       s.INN,
       s.NAIMEN AS "Наименование"
FROM   src s
JOIN   opf_all o
  ON   REGEXP_LIKE(
         s.NAIMEN,
         '^[[:space:]]*' || o.opf || '([[:space:]]|["«„''‘’]|$)',
         'i'
       )
WHERE  NOT REGEXP_LIKE(s.NAIMEN, '^[А-ЯЁ][А-ЯЁа-яё\-]+[[:space:]]+[А-ЯЁ]\.', 'c')
  AND  LENGTH(s.NAIMEN) BETWEEN 5 AND 300
ORDER  BY s.NAIMEN;