В PostgreSQL для извлечения текста между скобками можно использовать регулярные выражения с функцией regexp_replace, regexp_matches или substring. Вот пример использования этих методов.
1. Пример использования regexp_matches
Если имеется строка и необходимо получить текст между первой парой круглых скобок, можно использовать функцию regexp_matches следующим образом:
SELECT regexp_matches('Текст с (нужным текстом) внутри скобок', '\((.*?)\)')
Этот запрос вернет массив, содержащий текст: {"нужным текстом"}
2. Пример использования substring
Другой способ - использовать substring с регулярным выражением:
SELECT substring('Текст с (нужным текстом) внутри скобок' FROM '\((.*?)\)')
Этот запрос также вернет: нужным текстом
3. Пример использования regexp_replace
Если необходимо просто удалить текст вне скобок и оставить только то, что внутри, можно использовать regexp_replace:
SELECT regexp_replace('Текст с (нужным текстом) внутри скобок', '.*\((.*?)\).*', '\1')
Этот запрос вернет: нужным текстом.
4. Поддержка нескольких пар скобок
Если есть несколько пар скобок и необходимо извлечь все тексты между ними, то можно использовать regexp_matches с g флагом (глобальный поиск):
SELECT regexp_matches('Текст с (первый текст) и (второй текст) внутри скобок', '\((.*?)\)', 'g');
Этот запрос вернет массив с каждым текстом между скобками:
{"первый текст"}
{"второй текст"}