Фильтрация данных из JSONB | Postgres

#postgresql

Вопрос:

У меня есть вопрос относительно запроса данных из полей jsob.

У меня есть следующая таблица (упрощенная):

 create table mytable
(
   
    headers          jsonb                    not null,
    
);
 

headers в столбце хранятся заголовки HTTP, один из которых « PATH_INFO » ( всегда присутствует в данных), и в нем в основном хранятся связанные пути запросов.

Пример "/api/users"

Каков наилучший способ получить все уникальные "PATH_INFO" записи из headers данных, имея в виду, что путь с / в конце и без / в конце следует рассматривать как одни и те же пути?

Пример — "/api/users" == "/api/users/"

НРАВИТСЯ и МНЕ НРАВИТСЯ, кажется, замедляется…

Спасибо.

Версия Postgres — 11

Ответ №1:

Я бы предложил «нормализовать» PATH_INFO (т. Е. Удалить косую черту, если таковая имеется), используя regexp_replace вот так.

 select distinct regexp_replace(headers->>'PATH_INFO', '/?



, '')
from mytable;