with src as (
select naimen
from sh.uch_vse
where naimen is not null
)
select distinct
s.naimen as "Наименование"
from src s
where (
regexp_like(
upper(s.naimen),
'^[[:space:]]*(ООО|ОАО|ЗАО|ПАО|АО|НАО|ТОО|ИП|НКО|ФГУП|МУП|ГУП|ГБУ|ГКУ|ГАУ|АНО|ПК|СПК|КФХ|РПО|СНТ|ТСЖ|ЖСК|АКБ|КБ)([[:space:]]|["«„''‘’]|$)',
'i'
)
or regexp_like(
upper(s.naimen),
'^[[:space:]]*(ОБЩЕСТВО[[:SPACE:]]+С[[:SPACE:]]+ОГРАНИЧЕННОЙ[[:SPACE:]]+ОТВЕТСТВЕННОСТЬЮ|АКЦИОНЕРНОЕ[[:SPACE:]]+ОБЩЕСТВО|ПУБЛИЧНОЕ[[:SPACE:]]+АКЦИОНЕРНОЕ[[:SPACE:]]+ОБЩЕСТВО|ЗАКРЫТОЕ[[:SPACE:]]+АКЦИОНЕРНОЕ[[:SPACE:]]+ОБЩЕСТВО|ОТКРЫТОЕ[[:SPACE:]]+АКЦИОНЕРНОЕ[[:SPACE:]]+ОБЩЕСТВО|ИНДИВИДУАЛЬНЫЙ[[:SPACE:]]+ПРЕДПРИНИМАТЕЛЬ|LLC|LTD|JSC|PJSC|INC|GMBH)([[:SPACE:]]|["«„''‘’]|$)',
'i'
)
)
and not regexp_like(
s.naimen,
'^[А-ЯЁ][А-ЯЁа-яё\-]+[[:space:]]+[А-ЯЁ]\.',
'c'
)
and length(s.naimen) between 5 and 300
order by s.naimen;