Можете да използвате съвпадение на шаблон функция в Postgres.
Първо измислете модел за да улови всичко до четвъртия >
характер.
За да започнете своя модел, трябва да създадете подгрупа, която улавя не >
символи и един >код> знак:
([^>]*>)
След това заснемете това четири пъти, за да стигнете до четвъртото копие на >
([^>]*>){4}
След това ще трябва да обвиете това в група, така че съвпадението да върне всичките четири екземпляра:
(([^>]*>){4})
и поставете символ за начало на низ за добра мярка, за да сте сигурни, че съвпада само от началото на низа (не в средата):
^(([^>]*>){4})
Ето един работещ regex101 пример за това!
След като имате модела, който ще върне това, което искате в първия групов елемент (който можете да кажете в онлайн регулярния израз в десния страничен панел), трябва да го изберете обратно в SQL.
В Postgres, функцията за подниз има опция за използване на модел на регулярен израз за извличане на текст от входа с помощта на оператор „от“ в подниза.
За да завършите, съберете всичко!
select substring(filter_type from '^(([^>]*>){4})')
from filter_table
Ако искате да съпоставите целия низ, когато има по-малко от четири екземпляра на >
, използвайте този регулярен израз:
^(([^>]*>){4}|.*)