# PostgreSQL JSONB_SET() Function

> JSONB_SET() accepts a new value, a JSONB value, and a path as arguments, and inserts the new value at the specified path within the targeted JSONB value.

In PostgreSQL, various built-in functions are used to deal with the JSON and JSONB data efficiently, such as TO_JSONB(), JSONB_ARRAY_ELEMENTS(), JSONB_BUILD_ARRAY(), and many more. Among them, the most frequently used function is **JSONB_SET()** which inserts or updates the given value at the specified path.

This write-up will guide you on using the JSONB_SET() function in PostgreSQL using practical examples.

 **PostgreSQL JSONB_SET() Function**

JSONB_SET() is a predefined JSON function that accepts a new value, a JSONB value to insert/replace the new value into, and the targeted path. As a result, it inserts/replaces the “new value” in the targeted JSONB value at the specified path.

 **Syntax**

Check out the below-stated syntax for the PostgreSQL’s JSONB_SET() function:
    
    
    JSONB_SET(
    target_val JSONB, 
    path TEXT[], 
    new_val JSONB[, create_if_missing BOOLEAN]
    )

 **Parameters**

Here is the parameter’s description that will help you understand JSONB_SET() function better:

\- The “ **target_val** ” represents a JSONB value to insert/replace the new value into.

\- The “path” parameter represents a text array where new values ​​will be inserted.

\- The “ **new_val** ” represents a value to be inserted/replaced.

Let’s implement the JSONB_SET() function practically.

 **Example 1: Using JSONB_SET() Function on JSON Arrays**

The following example illustrates the use of the JSONB_SET() function on JSON Arrays:
    
    
    SELECT JSONB_SET('[100, 200, 125, 250, 120]', '{2}', '"Joseph"');

The above code will insert “Joseph” at the second index of the specified array:

The output demonstrates that the specified function successfully replaces the array element at the second index with "Joseph".

 **Example 2: Using JSONB_SET() Function on JSON Object**

The following example illustrates the use of the JSONB_SET() function on JSON Object:
    
    
    SELECT JSONB_SET('{"Joseph": 100}', '{Joseph}', '"250"');

The output demonstrates that the stated function successfully updated the object’s value to "250".

 **Example 3: Using JSONB_SET() Function to Insert New Field in JSON Object**

The below example demonstrates the use of the JSONB_SET() function to insert a new field in JSON Object:
    
    
    SELECT JSONB_SET('{"Joseph": 100}', '{Seth}', '250');

A path that does not already exist in the JSON object will be inserted as a new field:

A new field has been successfully inserted into the selected JSON object.

 **Example 4: Disable Default Insertion in JSON Object**

You can disable the default insertion in JSON objects by using the "false" parameter value, as shown in the following example:
    
    
    SELECT JSONB_SET('{"Joseph": 100}', '{Seth}', '250', FALSE);

From the output, it can be clearly seen that this time JSONB_SET() doesn't insert the specified value into the JSON object.

 **Conclusion**

JSONB_SET() is a predefined JSON function that accepts a new value, a JSONB value to insert/replace the new value into, and the targeted path. As a result, it inserts/replaces the “new value” in the targeted JSONB value at the specified path. A path that does not already exist in the JSON object will be inserted as a new field. However, users can disable the default insertion in JSON objects by using the "false" parameter value. This write-up has demonstrated various use cases of the JSONB_SET() function.

---
[View this page online](https://www.commandprompt.com/education/postgresql-jsonb_set-function/)