Pre-loader


Робота в SQL з типом даних JSON в Postgresql

PostgreSQL підтримує роботу з типом даних JSON і має кілька функцій та операцій для роботи з JSON-даними. Ось кілька прикладів того, що можна зробити з JSON в PostgreSQL:

  1. Створення JSON-об'єктів:
    Можна створювати JSON-об'єкти та масиви прямо в запитах SQL:
    SELECT ’{"name": "John", "age": 30}’::json AS person;
    

    Або для масивів:

    SELECT ’[1, 2, 3]’::json AS numbers;
    

  2. Отримання значень з JSON-об'єктів:
    Витягнення конкретних значень з JSON-об'єкта можна виконати за допомогою оператора ->:
    SELECT ’{"name": "John", "age": 30}’::json->’name’ AS person_name;
    

    Це поверне значення "John".

  3. Фільтрація за значеннями JSON:
    Можна використовувати JSON-оператори для фільтрації рядків за значеннями в JSON-полях:
    SELECT * FROM table_name WHERE json_column->>’key’ = ’value’;
    

  4. Оновлення JSON-даних:
    Оновлення конкретного поля в JSON-даних можна виконати за допомогою функції jsonb_set:
     
    UPDATE table_name SET json_column = jsonb_set(json_column, ’{key}’, ’"new_value"’::jsonb);
    

  5. Розгортання JSON-масивів:
    За допомогою функції json_array_elements можна розгорнути JSON-масив та витягти його елементи:
     
    SELECT json_array_elements(’[1, 2, 3]’::json) AS number;
    

  6. Агрегація даних з JSON:
    Можна використовувати агрегації для обчислення значень з JSON-даних:
     
    SELECT AVG((json_column->>’age’)::int) AS average_age FROM table_name;
    

  7. Умовні вирази для JSON:
    Можна використовувати умовні вирази для вибору значень в JSON-даних за допомогою функції CASE:
     
    SELECT
        CASE WHEN json_column->>’status’ = ’active’ THEN ’Active’
             WHEN json_column->>’status’ = ’inactive’ THEN ’Inactive’
             ELSE ’Unknown’ END AS status_description
    FROM table_name;
    

  8. Видалення елементів з JSON-даних:
    Ви можете видаляти елементи з JSON-об'єктів за допомогою функції jsonb_delete:
    UPDATE table_name
    SET json_column = jsonb_delete(json_column, ’{key}’);
    

  9. Пошук в JSON-даних:
    Використовуйте оператори @> або ? для пошуку в JSON-даних:
     
    SELECT * FROM table_name WHERE json_column @> ’{"key": "value"}’;
    
    Або за допомогою оператора ?:
     
    SELECT * FROM table_name WHERE json_column->’key’ ? ’value’;
    

  10. З'єднання JSON-об'єктів:
    Можна об'єднувати два JSON-об'єкти за допомогою ||:
     
    SELECT ’{"name": "John"}’::json || ’{"age": 30}’::json AS merged_json;
    

  11. Перетворення рядків у JSON:
    Використовуйте функцію to_json для перетворення рядків у JSON-об'єкти:
     
    SELECT to_json(’Hello, world!’::text) AS json_text;
    

  12. Створення JSON-масивів з рядків:
    Використовуйте функцію json_agg для створення JSON-масивів з рядків:
     
    SELECT json_agg(row_to_json(table_name)) AS json_array FROM table_name;
    

  13. Отримання ключів та значень з JSON-об'єктів:
    Використовуйте функції jsonb_object_keys для отримання ключів та jsonb_each для отримання ключів та значень:
     
    -- Отримання ключів
    SELECT jsonb_object_keys(’{"name": "John", "age": 30}’::jsonb) AS keys;
    
    -- Отримання ключів та значень
    SELECT * FROM jsonb_each(’{"name": "John", "age": 30}’::jsonb);
    

  14. Робота з масивами в JSON:
    Можна використовувати функції, такі як jsonb_array_elements та jsonb_array_length, для роботи з масивами в JSON-даних:
     
    -- Розгортання масиву
    SELECT jsonb_array_elements(’[1, 2, 3]’::jsonb) AS element;
    
    -- Отримання довжини масиву
    SELECT jsonb_array_length(’[1, 2, 3]’::jsonb) AS array_length;
    

  15. Генерація JSON з реляційних таблиць:
    Використовуйте функції row_to_json та json_agg для генерації JSON з рядків реляційної таблиці:
     
    -- Генерація JSON з рядка таблиці
    SELECT row_to_json(table_name) AS json_data FROM table_name;
    
    -- Генерація JSON-масиву з рядків таблиці
    SELECT json_agg(row_to_json(table_name)) AS json_array FROM table_name;
    

  16. Застосування фільтрів до масивів в JSON:
    Можна використовувати функцію jsonb_array_elements_text для застосування фільтрів до масивів в JSON-даних:
     
    -- Вибір елементів, які починаються на "A"
    SELECT * FROM table_name
    WHERE json_column->’array_field’ @> ’["A"]’::jsonb;
    

  17. Використання оператора - для вилучення ключів:
    Можна вилучати ключі з JSON-об'єкта за допомого оператора -:
     
    SELECT ’{"name": "John", "age": 30}’::jsonb - ’age’ AS json_without_age;
    

  18. Збільшення числового значення в JSON-даних:
    Використовуйте jsonb_set для збільшення числового значення в JSON-даних:
     
    UPDATE table_name
    SET json_column = jsonb_set(json_column, ’{count}’, (json_column->>’count’)::int + 1)::jsonb
    WHERE condition;
    

  19. Групування та агрегація JSON-даних:
    Можна групувати рядки за допомогою JSON-полів та використовувати агрегації:
     
    SELECT json_column->>’category’ AS category, COUNT(*) AS count
    FROM table_name
    GROUP BY category;
    

  20. Використання функції jsonb_pretty для форматування JSON:
    Функція jsonb_pretty дозволяє красиво форматувати JSON для зручного читання:
     
    SELECT jsonb_pretty(’{"name": "John", "age": 30}’::jsonb) AS pretty_json;
    

  21. Конвертація JSON в рядки:
    Можна використовувати функцію jsonb_build_object для конвертації JSON в рядки:
     
    SELECT jsonb_build_object(’key’, ’value’) AS json_string;
    

  22. Застосування умовних операцій до JSON:
    Можна використовувати умовні операції для модифікації JSON-даних:
     
    UPDATE table_name
    SET json_column = json_column || ’{"status": "updated"}’::jsonb
    WHERE condition;
    

  23. Пошук у вкладених JSON-структурах:
    Можна використовувати оператор -> для доступу до вкладених JSON-структур та виконання операцій в них:
     
    SELECT json_column->’details’->>’attribute’ AS nested_attribute
    FROM table_name;
    

  24. Використання функції jsonb_strip_nulls:
    Функція jsonb_strip_nulls дозволяє вилучати всі значення null з JSON-структури:
     
    SELECT jsonb_strip_nulls(’{"name": "John", "age": null}’::jsonb) AS stripped_json;
    

  25. Операції порівняння JSON-даних:
    Можна використовувати операції порівняння для порівняння JSON-даних:
     
    SELECT * FROM table_name
    WHERE json_column = ’{"name": "John", "age": 30}’::jsonb;
    

  26. Використання функції jsonb_extract_path для отримання конкретного шляху:
    Функція jsonb_extract_path дозволяє отримати значення за конкретним шляхом в JSON-даних:
     
    SELECT jsonb_extract_path(’{"user": {"name": "Alice"}}’::jsonb, ’user’, ’name’) AS user_name;
    

  27. Створення JSONB-індексів:
    Для поліпшення продуктивності можна створювати індекси на JSON-поля:
     
    CREATE INDEX idx_json_column ON table_name USING gin(json_column);
    

  28. Генерація JSON з рядків за допомогою json_object_agg:
    Можна використовувати функцію json_object_agg для групування рядків у вигляді JSON-об'єктів:
     
    SELECT json_object_agg(id, name) AS id_name_mapping FROM table_name;
    

  29. Використання функції jsonb_path_query для пошуку в JSONB-структурі:
    Функція jsonb_path_query дозволяє виконувати запити до JSONB-структур:
     
    SELECT jsonb_path_query(’{"name": "John", "age": 30}’::jsonb, ’$.name’) AS name_result;
    

  30. Оновлення вкладених JSON-полів:
    Можна використовувати || для оновлення вкладених JSON-полів:
     
    UPDATE table_name
    SET json_column = json_column || ’{"details": {"status": "updated"}}’::jsonb
    WHERE condition;
    

  31. Фільтрація за допомогою jsonb_path_query_array:
    Можна використовувати jsonb_path_query_array для отримання масиву результатів фільтрації:
    SELECT jsonb_path_query_array(’{"users": [{"name": "John"}, {"name": "Alice"}]}’::jsonb, ’$.users[*].name’) AS names;
    

  32. Використання функції jsonb_insert для вставки значень: Функція jsonb_insert дозволяє вставляти нові значення в JSONB-структуру:
    UPDATE table_name
    SET json_column = jsonb_insert(json_column, ’{details, city}’, ’"New York"’);
    

  33. Застосування функції jsonb_array_elements для агрегації масивів:
    Можна використовувати jsonb_array_elements для агрегації значень з масивів:
     
    SELECT json_column->>’name’ AS name, jsonb_array_elements(json_column->’hobbies’) AS hobby
    FROM table_name;
    

  34. Використання функції jsonb_agg для агрегації значень в JSON-масив:
    Функція jsonb_agg дозволяє агрегувати значення в JSON-масив:
     
    SELECT category, jsonb_agg(name) AS names
    FROM table_name
    GROUP BY category;
    

  35. Перевірка наявності ключа в JSON-об'єкті за допомого оператора ?:
    Використовуйте оператор ? для перевірки наявності ключа в JSON-об'єкті:
     
    SELECT * FROM table_name
    WHERE json_column->’details’ ? ’city’;
    

  36. Використання функції jsonb_each_text для отримання пар ключ-значення:
    Функція jsonb_each_text дозволяє отримати пари ключ-значення з JSON-об'єкта:
     
    SELECT key, value FROM jsonb_each_text(’{"name": "John", "age": 30}’::jsonb);
    

  37. Генерація JSON-строки з рядка за допомогою to_json:
    Використовуйте функцію to_json для перетворення рядка в JSON-строку:
     
    SELECT to_json(’Hello, world!’) AS json_string;
    

  38. Використання оператора #>> для отримання значення за шляхом:
    Використовуйте оператор #>> для отримання значення за конкретним шляхом в JSON-даних:
     
    SELECT json_column #>> ’{details, city}’ AS city_name
    FROM table_name;
    

  39. Використання функції jsonb_set для оновлення вкладених значень:
    Функція jsonb_set може бути використана для оновлення вкладених значень в JSONB-структурі:
     
    UPDATE table_name
    SET json_column = jsonb_set(json_column, ’{details, city}’, ’"New York"’)
    WHERE condition;
    

  40. Використання функції jsonb_object_agg для агрегації ключ-значення:
    Функція jsonb_object_agg дозволяє агрегувати пари ключ-значення в JSON-об'єкт:
     
    SELECT category, jsonb_object_agg(name, price) AS products
    FROM products_table
    GROUP BY category;
    

  41. Застосування функції jsonb_delete для вилучення елементів:
    Функція jsonb_delete дозволяє вилучати елементи з JSONB-структури:
     
    UPDATE table_name
    SET json_column = jsonb_delete(json_column, ’{details, city}’)
    WHERE condition;
    

  42. Використання функції jsonb_path_match для фільтрації за шляхом:
    Функція jsonb_path_match дозволяє фільтрувати за допомогою шляхів в JSONB-структурі:
     
    SELECT *
    FROM table_name
    WHERE jsonb_path_match(json_column, ’$.details.city == "New York"’);
    

  43. Створення JSON-об'єкта за допомогою jsonb_build_object:
    Використовуйте функцію jsonb_build_object для створення JSON-об'єкта:
     
    SELECT jsonb_build_object(’name’, ’John’, ’age’, 30) AS person_data;
    

  44. Використання функції jsonb_array_length для отримання довжини масиву:
    Функція jsonb_array_length дозволяє отримати довжину масиву в JSONB:
     
    SELECT jsonb_array_length(’[1, 2, 3]’::jsonb) AS array_length;
    

  45. Використання функції jsonb_strip_nulls для вилучення значень null:
    Функція jsonb_strip_nulls може бути використана для вилучення всіх значень null з JSONB-структури:
     
    SELECT jsonb_strip_nulls(’{"name": "John", "age": null, "city": "New York"}’::jsonb) AS cleaned_json;
    

  46. Використання функції jsonb_path_query для отримання значень за шляхом:
    Функція jsonb_path_query дозволяє виконувати запити до JSONB-структур за допомогою шляхів:
     
    SELECT jsonb_path_query(’{"user": {"name": "Alice", "age": 25}}’::jsonb, ’$.user.name’) AS user_name;
    

  47. Використання функції jsonb_typeof для отримання типу значення:
    Функція jsonb_typeof дозволяє отримати тип значення в JSONB-структурі:
     
    SELECT jsonb_typeof(’{"name": "John"}’::jsonb->’name’) AS name_type;
    

  48. Застосування функції jsonb_merge для об'єднання двох JSONB-структур:
    Функція jsonb_merge може бути використана для об'єднання двох JSONB-структур:
     
    SELECT jsonb_merge(’{"name": "John"}’::jsonb, ’{"age": 30}’::jsonb) AS merged_json;
    

  49. Використання оператора @> для перевірки включення одного JSONB у інший:
    Оператор @> дозволяє перевіряти включення одного JSONB-об'єкта у інший:
     
    SELECT ’{"name": "John", "age": 30}’::jsonb @> ’{"name": "John"}’::jsonb AS is_included;
    

  50. Створення JSONB-індексу для поліпшення швидкодії:
    Створення JSONB-індексу може значно покращити швидкодію запитів, що використовують JSONB-поля:
     
    CREATE INDEX idx_json_column ON table_name USING gin(json_column);
    

  51. Використання функції json_strip_nulls для вилучення значень null:
    Функція json_strip_nulls може бути використана для вилучення всіх значень null з JSON-структури:
     
    SELECT json_strip_nulls(’{"name": "John", "age": null, "city": "New York"}’::json) AS cleaned_json;
    

  52. Використання функції jsonb_path_query_first для отримання першого значення за шляхом:
    Функція jsonb_path_query_first дозволяє отримати перше значення за шляхом в JSONB-структурі:
     
    SELECT jsonb_path_query_first(’{"user": {"name": "Alice", "age": 25}}’::jsonb, ’$.user.name’) AS user_name;
    

  53. Використання функції jsonb_object_keys для отримання ключів JSONB-об'єкта:
    Функція jsonb_object_keys повертає масив ключів JSONB-об'єкта:
     
    SELECT jsonb_object_keys(’{"name": "John", "age": 30}’::jsonb) AS keys;
    

  54. Використання функції jsonb_path_exists для перевірки існування шляху в JSONB-структурі:
    Функція jsonb_path_exists перевіряє, чи існує вказаний шлях в JSONB-структурі:
     
    SELECT jsonb_path_exists(’{"user": {"name": "Alice", "age": 25}}’::jsonb, ’$.user.name’) AS name_exists;
    

  55. Використання функції jsonb_array_elements_text для отримання текстових елементів масиву:
    Функція jsonb_array_elements_text розгортає JSONB-масив і повертає його текстові елементи:
     
    SELECT jsonb_array_elements_text(’["apple", "orange", "banana"]’::jsonb) AS fruit;
    

  56. Застосування функції jsonb_each для отримання ключів та значень з JSONB-об'єкта:
    Функція jsonb_each повертає масив пар ключ-значення для кожного елемента JSONB-об'єкта:
     
    SELECT * FROM jsonb_each(’{"name": "John", "age": 30}’::jsonb);
    

  57. Використання функції jsonb_path_match для фільтрації за допомогою шляхів:
    Функція jsonb_path_match дозволяє фільтрувати дані за допомогою складних умов на шляхи в JSONB-структурі:
     
    SELECT *
    FROM table_name
    WHERE jsonb_path_match(json_column, ’$.details.city == "New York"’);
    

  58. Використання функції jsonb_deep_object_keys для отримання всіх ключів вкладених об'єктів:
    Функція jsonb_deep_object_keys дозволяє отримати всі ключі вкладених об'єктів в JSONB-структурі:
     
    SELECT * FROM jsonb_deep_object_keys(’{"user": {"name": "Alice", "age": 25}}’::jsonb);
    

  59. Використання функції jsonb_path_query_array для отримання масиву результатів за шляхом:
    Функція jsonb_path_query_array повертає масив результатів запиту за шляхом в JSONB-структурі:
     
    SELECT jsonb_path_query_array(’{"users": [{"name": "John"}, {"name": "Alice"}]}’::jsonb, ’$.users[*].name’) AS names;
    

  60. Застосування функції jsonb_vacuum для оптимізації простору в JSONB-стовпці:
    Функція jsonb_vacuum виконує оптимізацію простору в JSONB-стовпці таблиці:
     
    VACUUM ANALYZE table_name;
    

  61. Генерація JSON-об'єкта за допомогою json_build_object:
    Використовуйте функцію json_build_object для створення JSON-об'єкта:
     
    SELECT json_build_object(’name’, ’John’, ’age’, 30) AS person_data;
    

  62. Використання функції jsonb_exists для перевірки існування ключа в JSONB-структурі:
    Функція jsonb_exists перевіряє, чи існує вказаний ключ в JSONB-структурі:
     
    SELECT jsonb_exists(’{"name": "John", "age": 30}’::jsonb, ’age’) AS age_exists;
    

  63. Застосування функції jsonb_set для оновлення вкладених значень в JSONB-структурі:
    Функція jsonb_set може бути використана для оновлення вкладених значень в JSONB-структурі:
     
    UPDATE table_name
    SET json_column = jsonb_set(json_column, ’{details, city}’, ’"San Francisco"’)
    WHERE condition;
    

  64. Використання функції jsonb_agg_distinct для агрегації унікальних значень в JSONB-масиві:
    Функція jsonb_agg_distinct агрегує унікальні значення в JSONB-масиві:
     
    SELECT category, jsonb_agg_distinct(name) AS unique_names
    FROM products_table
    GROUP BY category;
    

  65. Використання функції jsonb_path_query_first_text для отримання першого текстового значення за шляхом:
    Функція jsonb_path_query_first_text дозволяє отримати перше текстове значення за шляхом в JSONB-структурі:
     
    SELECT jsonb_path_query_first_text(’{"user": {"name": "Alice", "age": 25}}’::jsonb, ’$.user.name’) AS user_name;
    

  66. Використання функції jsonb_to_recordset для розгортання JSONB-масиву в реляційну структуру:
    Функція jsonb_to_recordset дозволяє розгортати JSONB-масив у реляційну структуру:
     
    SELECT * FROM jsonb_to_recordset(’[{"name": "John", "age": 30}, {"name": "Alice", "age": 25}]’::jsonb) AS t(name text, age int);
    

  67. Використання функції json_array_length для отримання довжини JSON-масиву:
    Функція json_array_length дозволяє отримати довжину JSON-масиву:
     
    SELECT json_array_length(’["apple", "orange", "banana"]’::json) AS array_length;
    

  68. Використання функції json_strip_nulls для вилучення значень null з JSON-структури:
    Функція json_strip_nulls дозволяє вилучити всі значення null з JSON-структури:
     
    SELECT json_strip_nulls(’{"name": "John", "age": null, "city": "New York"}’::json) AS cleaned_json;
    

  69. Використання функції jsonb_array_elements_text для отримання текстових елементів масиву:
    Функція jsonb_array_elements_text дозволяє отримати текстові елементи з JSONB-масиву:
     
    SELECT jsonb_array_elements_text(’["apple", "orange", "banana"]’::jsonb) AS fruit;
    

  70. Використання оператора #- для вилучення ключів з JSON-об'єкта:
    Можна вилучати ключі з JSON-об'єкта за допомогою оператора #-:
     
    SELECT ’{"name": "John", "age": 30}’::jsonb #- ’{age}’ AS json_without_age;
    

  71. Використання функції jsonb_pretty для красивого форматування JSONB-даних:
    Функція jsonb_pretty призначена для красивого форматування JSONB-даних для зручності відображення:
     
    SELECT jsonb_pretty(’{"name": "John", "age": 30, "city": "New York"}’::jsonb) AS pretty_json;
    

  72. Використання функції jsonb_array_elements для розгортання JSONB-масиву:
    Функція jsonb_array_elements розгортає JSONB-масив та повертає його елементи:
     
    SELECT jsonb_array_elements(’["apple", "orange", "banana"]’::jsonb) AS fruit;
    

  73. Використання функції jsonb_path_query для вибору елементів за складним шляхом:
    Функція jsonb_path_query дозволяє вибирати елементи за складним шляхом в JSONB-структурі:
     
    SELECT jsonb_path_query(’{"user": {"name": "Alice", "age": 25, "address": {"city": "New York"}}}’::jsonb, ’$.user.address.city’) AS user_city;
    

  74. Використання функції jsonb_array_elements та jsonb_object_keys для роботи з масивами об'єктів:
    Комбінування функцій jsonb_array_elements та jsonb_object_keys дозволяє працювати з масивами об'єктів:
     
    SELECT key, value
    FROM jsonb_array_elements(’[{"name": "John", "age": 30}, {"name": "Alice", "age": 25}]’::jsonb) AS obj,
         jsonb_object_keys(obj) AS key;
    

  75. Використання функції jsonb_typeof для отримання типу значення в JSONB-структурі:
    Функція jsonb_typeof повертає тип значення в JSONB-структурі:
     
    SELECT jsonb_typeof(’{"name": "John"}’::jsonb->’name’) AS name_type;
    

  76. Використання функції jsonb_array_elements для отримання усіх значень масиву:
    Функція jsonb_array_elements може бути використана для отримання усіх значень з JSONB-масиву:
     
    SELECT value
    FROM jsonb_array_elements(’["apple", "orange", "banana"]’::jsonb) AS fruits;
    

  77. Використання оператора ->> для отримання значення за ключем як рядка:
    Оператор ->> дозволяє отримати значення за ключем як рядка:
     
    SELECT ’{"name": "John", "age": 30}’::jsonb ->> ’name’ AS name;
    

  78. Використання функції jsonb_object_agg для агрегації значень в JSONB-об'єкт:
    Функція jsonb_object_agg агрегує значення в JSONB-об'єкт:
     
    SELECT category, jsonb_object_agg(name, price) AS products
    FROM products_table
    GROUP BY category;
    

  79. Використання функції jsonb_to_tsvector для створення tsvector індексу з JSONB-даних:
    Функція jsonb_to_tsvector дозволяє створювати tsvector для використання у пошукових операціях:
     
    CREATE INDEX idx_jsonb_text_search ON table_name USING gin(jsonb_to_tsvector(’english’, json_column));
    

  80. Використання функції jsonb_typeof для визначення типу JSONB-значення:
    Функція jsonb_typeof дозволяє визначити тип JSONB-значення:
     
    SELECT jsonb_typeof(’{"name": "John"}’::jsonb->’name’) AS name_type;
    

  81. Використання функції jsonb_path_query_array для отримання масиву результатів за шляхом:
    Функція jsonb_path_query_array повертає масив результатів запиту за шляхом в JSONB-структурі:
     
    SELECT jsonb_path_query_array(’{"users": [{"name": "John"}, {"name": "Alice"}]}’::jsonb, ’$.users[*].name’) AS names;
    

  82. Використання функції jsonb_deep_object_keys для отримання всіх ключів вкладених об'єктів:
    Функція jsonb_deep_object_keys дозволяє отримати всі ключі вкладених об'єктів в JSONB-структурі:
     
    SELECT * FROM jsonb_deep_object_keys(’{"user": {"name": "Alice", "age": 25}}’::jsonb);
    

  83. Використання функції jsonb_set для оновлення вкладених значень:
    Функція jsonb_set може бути використана для оновлення вкладених значень в JSONB-структурі:
     
    UPDATE table_name
    SET json_column = jsonb_set(json_column, ’{details, city}’, ’"San Francisco"’)
    WHERE condition;
    

  84. Використання функції jsonb_array_elements_text для отримання текстових елементів масиву:
    Функція jsonb_array_elements_text розгортає JSONB-масив і повертає його текстові елементи:
     
    SELECT jsonb_array_elements_text(’["apple", "orange", "banana"]’::jsonb) AS fruit;
    

  85. Використання функції jsonb_vacuum для оптимізації простору в JSONB-стовпці:
    Функція jsonb_vacuum виконує оптимізацію простору в JSONB-стовпці таблиці:
     
    VACUUM ANALYZE table_name;
    

  86. Використання функції jsonb_delete для вилучення елементів:
    Функція jsonb_delete дозволяє вилучати елементи з JSONB-структури:
     
    UPDATE table_name
    SET json_column = jsonb_delete(json_column, ’{details, city}’)
    WHERE condition;
    

  87. Використання оператора @> для перевірки включення одного JSONB у інший:
    Оператор @> дозволяє перевіряти включення одного JSONB-об'єкта у інший:
     
    SELECT ’{"name": "John", "age": 30}’::jsonb @> ’{"name": "John"}’::jsonb AS is_included;
    

  88. Використання функції jsonb_strip_nulls для вилучення значень null:
    Функція jsonb_strip_nulls може бути використана для вилучення всіх значень null з JSONB-структури:
     
    SELECT jsonb_strip_nulls(’{"name": "John", "age": null, "city": "New York"}’::jsonb) AS cleaned_json;
    

  89. Використання функції jsonb_object_agg для агрегації ключ-значення:
    Функція jsonb_object_agg дозволяє агрегувати пари ключ-значення в JSON-об'єкт:
     
    SELECT category, jsonb_object_agg(name, price) AS products
    FROM products_table
    GROUP BY category;
    

  90. Використання функції jsonb_to_tsvector для створення tsvector індексу з JSONB-даних:
    Функція jsonb_to_tsvector дозволяє створювати tsvector для використання у пошукових операціях:
     
    CREATE INDEX idx_jsonb_text_search ON table_name USING gin(jsonb_to_tsvector(’english’, json_column));
    

  91. Використання функції jsonb_typeof для отримання типу значення:
    Функція jsonb_typeof дозволяє отримати тип значення в JSONB-структурі:
     
    SELECT jsonb_typeof(’{"name": "John"}’::jsonb->’name’) AS name_type;
    

  92. Використання функції jsonb_insert для вставки нового елемента:
    Функція jsonb_insert вставляє новий елемент в JSONB-структуру:
     
    UPDATE table_name
    SET json_column = jsonb_insert(json_column, ’{details, city}’, ’"San Francisco"’)
    WHERE condition;
    

  93. Використання функції jsonb_each для отримання ключів та значень:
    Функція jsonb_each повертає масив пар ключ-значення для кожного елемента JSONB-об'єкта:
     
    SELECT * FROM jsonb_each(’{"name": "John", "age": 30}’::jsonb);
    

  94. Використання функції jsonb_path_query_text_array для отримання масиву текстових результатів за шляхом:
    Функція jsonb_path_query_text_array повертає масив текстових результатів запиту за шляхом в JSONB-структурі:
     
    SELECT jsonb_path_query_text_array(’{"users": [{"name": "John"}, {"name": "Alice"}]}’::jsonb, ’$.users[*].name’) AS names;
    

  95. Використання функції jsonb_array_length для отримання довжини JSONB-масиву:
    Функція jsonb_array_length дозволяє отримати довжину JSONB-масиву:
     
    SELECT jsonb_array_length(’["apple", "orange", "banana"]’::jsonb) AS array_length;
    

  96. Використання функції jsonb_path_query_first_text для отримання першого текстового значення за шляхом:
    Функція jsonb_path_query_first_text дозволяє отримати перше текстове значення за шляхом в JSONB-структурі:
     
    SELECT jsonb_path_query_first_text(’{"user": {"name": "Alice", "age": 25}}’::jsonb, ’$.user.name’) AS user_name;
    

  97. Використання функції jsonb_array_elements для розгортання JSONB-масиву:
    Функція jsonb_array_elements розгортає JSONB-масив та повертає його елементи:
     
    SELECT jsonb_array_elements(’["apple", "orange", "banana"]’::jsonb) AS fruit;
    

  98. Використання оператора ->> для отримання значення за ключем як рядка:
    Оператор ->> дозволяє отримати значення за ключем як рядка:
     
    SELECT ’{"name": "John", "age": 30}’::jsonb ->> ’name’ AS name;
    

  99. Використання функції jsonb_object_agg для агрегації значень в JSONB-об'єкт:
    Функція jsonb_object_agg агрегує значення в JSONB-об'єкт:
     
    SELECT category, jsonb_object_agg(name, price) AS products
    FROM products_table
    GROUP BY category;
    

  100. Використання функції jsonb_deep_object_keys для отримання всіх ключів вкладених об'єктів:
    Функція jsonb_deep_object_keys дозволяє отримати всі ключі вкладених об'єктів в JSONB-структурі:
     
    ```sql
    SELECT * FROM jsonb_deep_object_keys(’{"user": {"name": "Alice", "age": 25}}’::jsonb);
    ```
    

  101. Використання функції jsonb_pretty для красивого форматування JSONB-даних:
    Функція jsonb_pretty використовується для красивого форматування JSONB-даних для полегшення їхнього відображення:
     
    ```sql
    SELECT jsonb_pretty(’{"name": "John", "age": 30, "city": "New York"}’::jsonb) AS pretty_json;
    ```
    

  102. Використання функції jsonb_array_elements для отримання усіх значень масиву:
    Функція jsonb_array_elements може бути використана для отримання усіх значень з JSONB-масиву:
     
    ```sql
    SELECT value
    FROM jsonb_array_elements(’["apple", "orange", "banana"]’::jsonb) AS fruits;
    ```
    

  103. Використання функції jsonb_strip_nulls для вилучення значень null:
    Функція jsonb_strip_nulls може бути використана для вилучення всіх значень null з JSONB-структури:
     
    ```sql
    SELECT jsonb_strip_nulls(’{"name": "John", "age": null, "city": "New York"}’::jsonb) AS cleaned_json;
    ```
    

  104. Використання функції jsonb_typeof для визначення типу JSONB-значення:
    Функція jsonb_typeof дозволяє визначити тип JSONB-значення:
     
    ```sql
    SELECT jsonb_typeof(’{"name": "John"}’::jsonb->’name’) AS name_type;
    ```
    

  105. Використання функції jsonb_array_elements_text для отримання текстових елементів масиву:
    Функція jsonb_array_elements_text розгортає JSONB-масив і повертає його текстові елементи:
     
    ```sql
    SELECT jsonb_array_elements_text(’["apple", "orange", "banana"]’::jsonb) AS fruit;
    ```
    

  106. Використання функції jsonb_agg для агрегації значень в JSONB-масив:
    Функція jsonb_agg агрегує значення в JSONB-масив:
     
    ```sql
    SELECT category, jsonb_agg(name) AS products
    FROM products_table
    GROUP BY category;
    ```
    

  107. Використання функції jsonb_to_recordset для розгортання JSONB-масиву в реляційну структуру:
    Функція jsonb_to_recordset дозволяє розгортати JSONB-масив у реляційну структуру:
     
    ```sql
    SELECT * FROM jsonb_to_recordset(’[{"name": "John", "age": 30}, {"name": "Alice", "age": 25}]’::jsonb) AS t(name text, age int);
    ```
    

  108. Використання функції jsonb_path_query_first для отримання першого результату за шляхом:
    Функція jsonb_path_query_first дозволяє отримати перший результат за шляхом в JSONB-структурі:
     
    ```sql
    SELECT jsonb_path_query_first(’{"user": {"name": "Alice", "age": 25}}’::jsonb, ’$.user.name’) AS user_name;
    ```
    

  109. Використання функції jsonb_to_tsvector для створення tsvector індексу з JSONB-даних:
    Функція jsonb_to_tsvector дозволяє створювати tsvector для використання у пошукових операціях:
     
    ```sql
    CREATE INDEX idx_jsonb_text_search ON table_name USING gin(jsonb_to_tsvector(’english’, json_column));
    ```
    

  110. Використання функції jsonb_array_elements_text для отримання текстових елементів масиву:
    Функція jsonb_array_elements_text розгортає JSONB-масив і повертає його текстові елементи:
     
    ```sql
    SELECT jsonb_array_elements_text(’["apple", "orange", "banana"]’::jsonb) AS fruit;
    ```
    

  111. Використання функції jsonb_path_query_array для отримання масиву результатів за шляхом:
    Функція jsonb_path_query_array повертає масив результатів запиту за шляхом в JSONB-структурі:
     
    ```sql
    SELECT jsonb_path_query_array(’{"users": [{"name": "John"}, {"name": "Alice"}]}’::jsonb, ’$.users[*].name’) AS names;
    ```
    

  112. Використання функції jsonb_delete для вилучення елементів:
    Функція jsonb_delete дозволяє вилучати елементи з JSONB-структури:
     
    ```sql
    UPDATE table_name
    SET json_column = jsonb_delete(json_column, ’{details, city}’)
    WHERE condition;
    ```
    

  113. Використання функції jsonb_path_query_text_array для отримання масиву текстових результатів за шляхом:
    Функція jsonb_path_query_text_array повертає масив текстових результатів запиту за шляхом в JSONB-структурі:
     
    ```sql
    SELECT jsonb_path_query_text_array(’{"users": [{"name": "John"}, {"name": "Alice"}]}’::jsonb, ’$.users[*].name’) AS names;
    ```
    

  114. Використання функції jsonb_object_keys для отримання ключів об'єкта:
    Функція jsonb_object_keys повертає масив ключів в JSONB-об'єкті:
     
    ```sql
    SELECT jsonb_object_keys(’{"name": "John", "age": 30}’::jsonb) AS keys;
    ```
    

  115. Використання функції jsonb_set для оновлення вкладених значень:
    Функція jsonb_set може бути використана для оновлення вкладених значень в JSONB-структурі:
     
    ```sql
    UPDATE table_name
    SET json_column = jsonb_set(json_column, ’{details, city}’, ’"San Francisco"’)
    WHERE condition;
    ```
    

  116. Використання функції jsonb_array_elements для отримання усіх значень масиву:
    Функція jsonb_array_elements може бути використана для отримання усіх значень з JSONB-масиву:
     
    ```sql
    SELECT value
    FROM jsonb_array_elements(’["apple", "orange", "banana"]’::jsonb) AS fruits;
    ```
    

  117. Використання оператора ->> для отримання значення за ключем як рядка:
    Оператор ->> дозволяє отримати значення за ключем як рядка:
     
    ```sql
    SELECT ’{"name": "John", "age": 30}’::jsonb ->> ’name’ AS name;
    ```
    

  118. Використання функції jsonb_object_agg для агрегації значень в JSONB-об'єкт:
    Функція jsonb_object_agg агрегує значення в JSONB-об'єкт:
     
    ```sql
    SELECT category, jsonb_object_agg(name, price) AS products
    FROM products_table
    GROUP BY category;
    ```
    

  119. Використання функції jsonb_to_tsvector для створення tsvector індексу з JSONB-даних:
    Функція jsonb_to_tsvector дозволяє створювати tsvector для використання у пошукових операціях:
     
    ```sql
    CREATE INDEX idx_jsonb_text_search ON table_name USING gin(jsonb_to_tsvector(’english’, json_column));
    ```
    

  120. Використання функції jsonb_typeof для визначення типу JSONB-значення:
    Функція jsonb_typeof дозволяє визначити тип JSONB-значення:
     
    ```sql
    SELECT jsonb_typeof(’{"name": "John"}’::jsonb->’name’) AS name_type;
    ```
    

  121. Використання функції jsonb_path_query_first_text для отримання першого текстового значення за шляхом:
    Функція jsonb_path_query_first_text дозволяє отримати перше текстове значення за шляхом в JSONB-структурі:
     
    ```sql
    SELECT jsonb_path_query_first_text(’{"user": {"name": "Alice", "age": 25}}’::jsonb, ’$.user.name’) AS user_name;
    ```
    

  122. Використання функції jsonb_array_elements для розгортання JSONB-масиву:
    Функція jsonb_array_elements розгортає JSONB-масив та повертає його елементи:
     
    ```sql
    SELECT jsonb_array_elements(’["apple", "orange", "banana"]’::jsonb) AS fruit;
    ```
    

  123. Використання оператора @> для перевірки включення одного JSONB у інший:
    Оператор @> дозволяє перевіряти включення одного JSONB-об'єкта у інший:
     
    ```sql
    SELECT ’{"name": "John", "age": 30}’::jsonb @> ’{"name": "John"}’::jsonb AS is_included;
    ```
    

  124. Використання функції jsonb_strip_nulls для вилучення значень null:
    Функція jsonb_strip_nulls може бути використана для вилучення всіх значень null з JSONB-структури:
     
    ```sql
    SELECT jsonb_strip_nulls(’{"name": "John", "age": null, "city": "New York"}’::jsonb) AS cleaned_json;
    ```
    

  125. Використання функції jsonb_object_agg для агрегації ключ-значення:
    Функція jsonb_object_agg дозволяє агрегувати пари ключ-значення в JSON-об'єкт:
     
    ```sql
    SELECT category, jsonb_object_agg(name, price) AS products
    FROM products_table
    GROUP BY category;
    ```
    

  126. Використання функції jsonb_pretty для красивого форматування JSONB-даних:
    Функція jsonb_pretty використовується для красивого форматування JSONB-даних для полегшення їхнього відображення:
     
    ```sql
    SELECT jsonb_pretty(’{"name": "John", "age": 30, "city": "New York"}’::jsonb) AS pretty_json;
    ```
    

  127. Використання функції jsonb_array_elements для отримання усіх значень масиву:
    Функція jsonb_array_elements може бути використана для отримання усіх значень з JSONB-масиву:
     
    ```sql
    SELECT value
    FROM jsonb_array_elements(’["apple", "orange", "banana"]’::jsonb) AS fruits;
    ```
    

  128. Використання функції jsonb_strip_nulls для вилучення значень null:
    Функція jsonb_strip_nulls може бути використана для вилучення всіх значень null з JSONB-структури:
     
    ```sql
    SELECT jsonb_strip_nulls(’{"name": "John", "age": null, "city": "New York"}’::jsonb) AS cleaned_json;
    ```
    

  129. Використання функції jsonb_typeof для визначення типу JSONB-значення:
    Функція jsonb_typeof дозволяє визначити тип JSONB-значення:
     
    ```sql
    SELECT jsonb_typeof(’{"name": "John"}’::jsonb->’name’) AS name_type;
    ```
    

  130. Використання функції jsonb_array_elements_text для отримання текстових елементів масиву:
    Функція jsonb_array_elements_text розгортає JSONB-масив і повертає його текстові елементи:
     
    ```sql
    SELECT jsonb_array_elements_text(’["apple", "orange", "banana"]’::jsonb) AS fruit;
    ```
    

  131. Використання функції jsonb_path_query для отримання результату за шляхом:
    Функція jsonb_path_query повертає результат запиту за шляхом в JSONB-структурі:
     
    ```sql
    SELECT jsonb_path_query(’{"user": {"name": "Alice", "age": 25}}’::jsonb, ’$.user.name’) AS user_name;
    ```
    

  132. Використання функції jsonb_array_elements для отримання усіх елементів масиву:
    Функція jsonb_array_elements витягає всі елементи з JSONB-масиву:
     
    ```sql
    SELECT value
    FROM jsonb_array_elements(’["apple", "orange", "banana"]’::jsonb) AS fruit;
    ```
    

  133. Використання функції jsonb_set для оновлення значень за шляхом:
    Функція jsonb_set дозволяє оновлювати значення за шляхом в JSONB-структурі:
     
    ```sql
    UPDATE table_name
    SET json_column = jsonb_set(json_column, ’{user, name}’, ’"Bob"’)
    WHERE condition;
    ```
    

  134. Використання функції jsonb_array_length для отримання довжини JSONB-масиву:
    Функція jsonb_array_length визначає довжину JSONB-масиву:
     
    ```sql
    SELECT jsonb_array_length(’["apple", "orange", "banana"]’::jsonb) AS array_length;
    ```
    

  135. Використання функції jsonb_path_query_array для отримання масиву результатів за шляхом:
    Функція jsonb_path_query_array повертає масив результатів запиту за шляхом в JSONB-структурі:
     
    ```sql
    SELECT jsonb_path_query_array(’{"users": [{"name": "John"}, {"name": "Alice"}]}’::jsonb, ’$.users[*].name’) AS names;
    ```
    

  136. Використання функції jsonb_each_text для отримання ключів та значень у вигляді тексту:
    Функція jsonb_each_text повертає набір рядків ключ-значення для кожного елемента JSONB-об'єкта:
     
    ```sql
    SELECT * FROM jsonb_each_text(’{"name": "John", "age": 30}’::jsonb);
    ```
    

  137. Використання функції jsonb_array_elements для отримання елементів JSONB-масиву:
    Функція jsonb_array_elements може бути використана для отримання всіх елементів JSONB-масиву:
    ```sql
    SELECT value FROM jsonb_array_elements(’["apple", "orange", "banana"]’::jsonb);
    ```
    

  138. Використання функції jsonb_to_record для конвертації JSONB-значення в реляційну структуру:
    Функція jsonb_to_record конвертує JSONB-значення в реляційну структуру:
     
    ```sql
    SELECT * FROM jsonb_to_record(’{"name": "John", "age": 30}’::jsonb) AS t(name text, age int);
    ```
    

  139. Використання функції jsonb_build_object для створення JSONB-об'єкта:
    Функція jsonb_build_object створює JSONB-об'єкт з пар ключ-значення:
     
    ```sql
    SELECT jsonb_build_object(’name’, ’John’, ’age’, 30) AS person;
    ```
    

  140. Використання функції jsonb_deep_object_keys для отримання всіх ключів вкладених об'єктів:
    Функція jsonb_deep_object_keys дозволяє отримати всі ключі вкладених об'єктів в JSONB-структурі:
     
    ```sql
    SELECT * FROM jsonb_deep_object_keys(’{"user": {"name": "Alice", "age": 25}}’::jsonb);
    ```
    

  141. Використання функції jsonb_agg для агрегації значень в JSONB-масив:
    Функція jsonb_agg агрегує значення в JSONB-масив:
     
    ```sql
    SELECT category, jsonb_agg(name) AS products
    FROM products_table
    GROUP BY category;
    ```
    

  142. Використання функції jsonb_to_recordset для розгортання JSONB-масиву в реляційну структуру:
    Функція jsonb_to_recordset дозволяє розгортати JSONB-масив у реляційну структуру:
     
    ```sql
    SELECT * FROM jsonb_to_recordset(’[{"name": "John", "age": 30}, {"name": "Alice", "age": 25}]’::jsonb) AS t(name text, age int);
    ```
    

  143. Використання функції jsonb_path_query_first для отримання першого результату за шляхом:
    Функція jsonb_path_query_first дозволяє отримати перший результат за шляхом в JSONB-структурі:
     
    ```sql
    SELECT jsonb_path_query_first(’{"user": {"name": "Alice", "age": 25}}’::jsonb, ’$.user.name’) AS user_name;
    ```
    

  144. Використання функції jsonb_to_tsvector для створення tsvector індексу з JSONB-даних:
    Функція jsonb_to_tsvector дозволяє створювати tsvector для використання у пошукових операціях:
     
    ```sql
    CREATE INDEX idx_jsonb_text_search ON table_name USING gin(jsonb_to_tsvector(’english’, json_column));
    ```
    

  145. Використання функції jsonb_array_elements_text для отримання текстових елементів масиву:
    Функція jsonb_array_elements_text розгортає JSONB-масив і повертає його текстові елементи:
     
    ```sql
    SELECT jsonb_array_elements_text(’["apple", "orange", "banana"]’::jsonb) AS fruit;
    ```
    

  146. Використання функції jsonb_path_query_array для отримання масиву результатів за шляхом:
    Функція jsonb_path_query_array повертає масив результатів запиту за шляхом в JSONB-структурі:
     
    ```sql
    SELECT jsonb_path_query_array(’{"users": [{"name": "John"}, {"name": "Alice"}]}’::jsonb, ’$.users[*].name’) AS names;
    ```
    

  147. Використання функції jsonb_delete для вилучення елементів:
    Функція jsonb_delete дозволяє вилучати елементи з JSONB-структури:
     
    ```sql
    UPDATE table_name
    SET json_column = jsonb_delete(json_column, ’{details, city}’)
    WHERE condition;
    ```
    

  148. Використання функції jsonb_path_query_text_array для отримання масиву текстових результатів за шляхом:
    Функція jsonb_path_query_text_array повертає масив текстових результатів запиту за шляхом в JSONB-структурі:
     
    ```sql
    SELECT jsonb_path_query_text_array(’{"users": [{"name": "John"}, {"name": "Alice"}]}’::jsonb, ’$.users[*].name’) AS names;
    ```
    

  149. Використання функції jsonb_object_keys для отримання ключів об'єкта:
    Функція jsonb_object_keys повертає масив ключів в JSONB-об'єкті:
     
    ```sql
    SELECT jsonb_object_keys(’{"name": "John", "age": 30}’::jsonb) AS keys;
    ```
    

  150. Використання функції jsonb_set для оновлення вкладених значень:
    Функція jsonb_set може бути використана для оновлення вкладених значень в JSONB-структурі:
     
    ```sql
    UPDATE table_name
    SET json_column = jsonb_set(json_column, ’{details, city}’, ’"San Francisco"’)
    WHERE condition;
    ```
    

  151. Використання функції jsonb_path_query_first_text для отримання першого текстового значення за шляхом:
    Функція jsonb_path_query_first_text дозволяє отримати перше текстове значення за шляхом в JSONB-структурі:
     
    ```sql
    SELECT jsonb_path_query_first_text(’{"user": {"name": "Alice", "age": 25}}’::jsonb, ’$.user.name’) AS user_name;
    ```
    

  152. Використання функції jsonb_array_elements для розгортання JSONB-масиву:
    Функція jsonb_array_elements розгортає JSONB-масив та повертає його елементи:
     
    ```sql
    SELECT jsonb_array_elements(’["apple", "orange", "banana"]’::jsonb) AS fruit;
    ```
    

  153. Використання оператора @> для перевірки включення одного JSONB у інший:
    Оператор @> дозволяє перевіряти включення одного JSONB-об'єкта у інший:
     
    ```sql
    SELECT ’{"name": "John", "age": 30}’::jsonb @> ’{"name": "John"}’::jsonb AS is_included;
    ```
    

  154. Використання функції jsonb_strip_nulls для вилучення значень null:
    Функція jsonb_strip_nulls може бути використана для вилучення всіх значень null з JSONB-структури:
     
    ```sql
    SELECT jsonb_strip_nulls(’{"name": "John", "age": null, "city": "New York"}’::jsonb) AS cleaned_json;
    ```
    

  155. Використання функції jsonb_object_agg для агрегації ключ-значення:
    Функція jsonb_object_agg дозволяє агрегувати пари ключ-значення в JSON-об'єкт:
     
    ```sql
    SELECT category, jsonb_object_agg(name, price) AS products
    FROM products_table
    GROUP BY category;
    ```
    

  156. Використання функції jsonb_pretty для красивого форматування JSONB-даних:
    Функція jsonb_pretty використовується для красивого форматування JSONB-даних для полегшення їхнього відображення:
     
    ```sql
    SELECT jsonb_pretty(’{"name": "John", "age": 30, "city": "New York"}’::jsonb) AS pretty_json;
    ```
    

  157. Використання функції jsonb_array_elements для отримання усіх значень масиву:
    Функція jsonb_array_elements може бути використана для отримання усіх значень з JSONB-масиву:
     
    ```sql
    SELECT value
    FROM jsonb_array_elements(’["apple", "orange", "banana"]’::jsonb) AS fruits;
    ```
    

  158. Використання функції jsonb_strip_nulls для вилучення значень null:
    Функція jsonb_strip_nulls може бути використана для вилучення всіх значень null з JSONB-структури:
     
    ```sql
    SELECT jsonb_strip_nulls(’{"name": "John", "age": null, "city": "New York"}’::jsonb) AS cleaned_json;
    ```
    

  159. Використання функції jsonb_typeof для визначення типу JSONB-значення:
    Функція jsonb_typeof дозволяє визначити тип JSONB-значення:
     
    ```sql
    SELECT jsonb_typeof(’{"name": "John"}’::jsonb->’name’) AS name_type;
    ```
    

  160. Використання функції jsonb_array_elements_text для отримання текстових елементів масиву:
    Функція jsonb_array_elements_text розгортає JSONB-масив і повертає його текстові елементи:
     
    ```sql
    SELECT jsonb_array_elements_text(’["apple", "orange", "banana"]’::jsonb) AS fruit;
    ```
    

Автор: Рудюк С.А. 2023. K2 Cloud ERP.