Подстрока должна возвращать отличительные значения - PullRequest
1 голос
/ 12 февраля 2020

У меня есть столбец имени, подобный этому:

Name
------
Roger
RogerMan
Roger That

Мне нужен запрос, который бы возвращал различные инициалы из столбца. Например, в этом случае я хочу вернуть:

Name
-----
R
RM
RT

Я попробовал несколько подходов для этого: 1. Оператор CASE (прекрасно работает на данный момент). 2. STRCMP 3. SUBSTRING

Однако я ищу более динамичный c подход с использованием функций в Postgres.

1 Ответ

3 голосов
/ 12 февраля 2020

Вы можете использовать regexp_replace() для удаления всех не прописных букв c символов из строки, например:

 regexp_replace(name, '[^A-Z]', '', 'g')

Демонстрация на DB Fiddle :

with t(name) as (
    select 'Roger'
    union all select 'RogerMan'
    union all select 'Roger That'
)
select name, regexp_replace(name, '[^A-Z]', '', 'g') initials from t
name       | initials
:--------- | :-------
Roger      | R       
RogerMan   | RM      
Roger That | RT      
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...