У меня есть таблица, которая содержит поле jsonb
с именем data
. Это поле может содержать произвольные данные. Один из них может быть emails
. Как;
{
...
"emails": ["mark_spencer@example.com", "john@example.com"],
...
}
Итак, email
поле является массивом. Обычно, если бы это была строка, я мог бы легко использовать ILIKE
или ~*
для этих данных, однако, будучи массивом, я думаю дважды. Потому что он все еще работает.
Выполненный мной запрос:
select * from test_tbl where "data" ->> 'emails' ILIKE '%spenc%';
-- OR --
select * from test_tbl where "data" ->> 'emails' ~* 'spenc';
См. Также: https://rextester.com/FFQ83366
Is правильно и безопасно использовать оператор ilike
и / или ~*
для элемента массива? Или есть лучший способ сделать эту работу?
Обратите внимание, что мне нужен частичный поиск, потому что клиент может дать только частичный поисковый запрос. Таким образом, поиск точного адреса электронной почты не вариант для меня (может быть, но не должен ограничиваться)
Я использую PostgreSQL 12.2