Skip to main content
Documents
Basic SyntaxMath FunctionsDate FunctionsJSON FunctionsDatabasesTables & Schema ManagementString FunctionsTriggersIndexes

PostgreSQL -> Operator

PostgreSQL's JSON functions, including the `->` operator, are used to extract values from JSON data types. They allow developers to efficiently query and manipulate JSON data stored in PostgreSQL databases.

Usage

The `->` operator is used to access a JSON object field by key. It is utilized when you want to retrieve a JSON object or array element based on a specified key or index.

SELECT json_column -> 'key'
FROM table_name;

In this syntax, `json_column -> 'key'` fetches the value associated with `'key'` from the JSON column.

Examples

1. Basic JSON Field Access

SELECT data -> 'name'
FROM users;

This example retrieves the value of the `name` key from the JSON column `data` in the `users` table.

2. Accessing Nested JSON Object

SELECT data -> 'address' -> 'city'
FROM customers;

Here, the example demonstrates accessing a nested JSON object by retrieving the `city` value from the `address` key within the JSON data of the `customers` table.

3. Working with JSON Arrays

SELECT data -> 'items' -> 0 -> 'product_name'
FROM orders;

This example shows how to access the `product_name` of the first element in the `items` array within the JSON data of the `orders` table.

Differentiating `->` and `->>` Operators

The `->` operator retrieves JSON objects or arrays, while the `->>` operator extracts text values from JSON data. This distinction is crucial when the goal is to obtain a plain text result directly.

Example: Using `->>` Operator

SELECT data ->> 'name'
FROM users;

In this example, `data ->> 'name'` retrieves the value of `name` as text, which can be useful for text-based comparisons or operations.

Error Handling

When accessing a key that does not exist, both `->` and `->>` return `NULL`. Account for this in your queries to prevent unexpected `NULL` results affecting operations.

JSON vs. JSONB

JSON

  • Stores data in text format.
  • Suitable for applications where precise text representation is necessary.

JSONB

  • Stores data in a binary format.
  • Offers better performance for querying and supports indexing, making it a preferred choice for frequent data access.

Tips and Best Practices

  • Use specific keys. Always use the exact key names as they appear in the JSON data to avoid errors.
  • Consider JSONB for indexing. If you need to perform frequent queries on JSON data, consider using `JSONB` for better performance and indexing capabilities.
  • Combine with other JSON functions. Use the `->>` operator for extracting text values directly, and other JSON functions like `jsonb_set` for updates.
  • Validate JSON structure. Ensure your JSON data is well-structured and validated before storing it in the database to avoid unexpected issues during querying.