Regex_replace Postgres - Проверить, если длина <= 2 символов - PullRequest
0 голосов
/ 06 февраля 2019

Мне нужно минимум 3 символа для учетных записей пользователей.Я повторно использую существующие имена, такие как

"tata-fzef - vcefv" или "kk" из поля IMP_FR, чтобы создать эти учетные записи.

Во втором примере "" kk "должно стать" k_k ", потому что менее 3 символов.

Как это сделать с Postgresql?

regexp_replace( IMP_FR , regexp, first_character + '_' + last character, 'g') 

1 Ответ

0 голосов
/ 20 февраля 2019

Регулярные выражения здесь не сильно помогут, поскольку REGEXP_REPLACE не поддерживает шаблоны условной замены.Здесь вам нужен другой шаблон замены для случаев, когда входные данные содержат только один, два или три или более символов.

Итак, здесь лучше использовать CASE ... WHEN ... ELSE и обычные функции обработки строк:

CREATE TABLE tabl1
    (s character varying)
;

INSERT INTO tabl1
    (s)
VALUES
    ('tata-fzef - vcefv'),
    ('kkk'),
    ('kk'),
    ('k')
;

SELECT
    CASE
       WHEN LENGTH(s) = 1 THEN '_' || s || '_'
       WHEN LENGTH(s) = 2 THEN LEFT(s,1) || '_' || RIGHT(s,1)
       ELSE s
    END AS Result
FROM  tabl1;

См. Онлайн-демонстрацию .Результат:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...