#postgresql
#postgresql
Вопрос:
У меня есть таблица Image
id | path | additional | item_id
1 /url/.. {"sm":"/url2/", "md": "/url3/"} 1
additional
является ли jsonb, который может быть Null, empty {} или со значениями
Я хочу проверить в jsonb, существует ли подобный ключ sm
. Если ключ существует, верните значение, если нет, верните path
.
Моя первоначальная идея — использовать CASE
, но у меня проблема с проверкой и извлечением значения из массива
Комментарии:
1. Какой тип данных
additional
столбца?2. Это реальный массив или
jsonb
? Массив какого типа? Хранятся ли в базе данных необычные косые черты, как вы их показываете?3. @LaurenzAlbe, это jsonb в PostgreSQL (я исправил, отображается в другом коде), значения отображаются в » «, как пары ключ-значение
Ответ №1:
Используйте coalesce()
:
select id,
coalesce(additional ->> 'sm', path) as path
from image;
Оператор ->>
вернет null
, если ключ не существует.
Комментарии:
1. даже если jsonb равен {} или null ?
2. @user3541631: да, даже тогда