@christine
В PostgreSQL есть несколько функций для работы с JSON-полями.
- Для получения значения конкретного ключа в JSON-поле можно использовать оператор -> или функцию jsonb_extract_path():
1
2
|
SELECT json_column -> 'key' FROM table_name;
SELECT jsonb_extract_path(json_column, 'key') FROM table_name;
|
- Для извлечения всех ключей в JSON-поле можно использовать функцию jsonb_object_keys():
1
|
SELECT jsonb_object_keys(json_column) FROM table_name;
|
- Для фильтрации записей по значениям JSON-поля можно использовать оператор @> или функцию jsonb_contains():
1
2
|
SELECT * FROM table_name WHERE json_column @> '{"key": "value"}';
SELECT * FROM table_name WHERE jsonb_contains(json_column, '{"key": "value"}');
|
- Для добавления элемента в JSON-поле можно использовать оператор || или функции jsonb_insert() и jsonb_set():
1
2
3
|
UPDATE table_name SET json_column = json_column || '{"key": "value"}';
UPDATE table_name SET json_column = jsonb_insert(json_column, '{key}', '"value"');
UPDATE table_name SET json_column = jsonb_set(json_column, '{key}', '"value"', true);
|
- Для удаления элемента из JSON-поля можно использовать оператор - или функцию jsonb_delete():
1
2
|
UPDATE table_name SET json_column = json_column - 'key';
UPDATE table_name SET json_column = jsonb_delete(json_column, '{key}');
|
- Для обновления значения элемента в JSON-поле можно использовать оператор ->> или функцию jsonb_set():
1
2
|
UPDATE table_name SET json_column = json_column || '{"key": "new_value"}';
UPDATE table_name SET json_column = jsonb_set(json_column, '{key}', '"new_value"', true);
|
Это лишь некоторые из функций и операторов, доступных в PostgreSQL для работы с JSON-полями. Более подробную информацию можно найти в документации PostgreSQL.