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

PostgreSQL ->> Operator

PostgreSQL's JSON functions are powerful tools for querying JSON data stored in your database. The `->>` operator is specifically used to extract the value of a JSON object field as text, allowing for easy manipulation and comparison of data.

Usage

The `->>` operator is used when you need to retrieve the value from a JSON object field as a plain text string. This is particularly useful when you need to perform operations or comparisons on the JSON field values.

sql
SELECT json_column->>'field_name'
FROM table_name;

In this syntax, `json_column` is the column containing JSON data, and `field_name` is the key whose value you want to extract as text.

Comparison with `->` Operator

While `->>` extracts the value as text, the `->` operator is used when you want to retrieve a JSON object or array. Use `->` if you need to maintain the JSON type for further JSON manipulation.

Examples

1. Basic Extraction

sql
SELECT data->>'name'
FROM employees;

This example extracts the `name` field from the `data` JSON column in the `employees` table as a text string.

2. Filtering with Extracted Value

sql
SELECT *
FROM orders
WHERE details->>'status' = 'shipped';

Here, the `->>` operator is used to filter orders by checking if the `status` field in the `details` JSON column equals 'shipped'.

3. Using Extracted Values in Calculations

sql
SELECT (details->>'quantity')::int * (details->>'price')::numeric AS total_cost
FROM sales;

This example converts extracted text values for `quantity` and `price` into numerical types and calculates the `total_cost` for each sale.

4. Handling Nested JSON Objects

For nested JSON objects, use multiple `->` operators before `->>` to navigate through the structure.

sql
SELECT json_column->'outer_key'->>'inner_key'
FROM table_name;

This example extracts the `inner_key` value from a nested JSON object.

Tips and Best Practices

  • Cast values appropriately. Use casting when performing calculations or comparisons to ensure the data is in the correct type.
  • Index JSON keys. Consider creating indexes on frequently queried JSON keys to improve query performance.
  • Validate JSON structure. Ensure the JSON data structure is consistent across rows to avoid runtime errors.
  • Use `->` vs `->>`. Use `->` when you need to maintain JSON type and `->>` for extracting plain text for further manipulation.

Potential Errors and Pitfalls

  • Non-existent keys: If a non-existent key is queried with `->>`, it returns `NULL`.
  • Non-JSON data: Ensure the column data is in JSON format to avoid errors.

Additional Note on JSONB

Consider using JSONB over JSON for better performance and indexing capabilities. JSONB stores data in a binary format, which can be more efficient for querying and indexing.