13.9 JSON_TRANSFORM Operator KEEP
JSON_TRANSFORM
operator KEEP
removes
all parts of the input data that are not targeted by at least one of the
specified path expressions.
Operator KEEP
is an exception, in that it can be
immediately followed by more than one path expression. It is not an assignment
operation (no =
and RHS).
As at least one path expression is required, there is no way to use
KEEP
to specify keeping nothing. So you can't use
KEEP
to remove a topmost object or array.
Example 13-17 JSON_TRANSFORM: Keeping Only Certain Fields
Only fields a and d are kept in the json_transform
result.
SELECT json_transform('{"a":1, "b":2, "c":3, "d":4}',
KEEP '$.a', '$.d')
Result:
{"a:1", "d":4}
Example 13-18 JSON_TRANSFORM: Keeping Only Fields With Values Satisfying a Predicate
Only fields whose values are greater than 2 are kept in the result. Wildcard
*
specifies all fields, and predicate
@>2
requires field values greater than
2
.
SELECT json_transform('{"a":1, "b":2, "c":3, "d":4}',
KEEP '$.*?(@ > 2)')
Result:
{"c:3", "d":4}
You can downscope the use of operation KEEP
by using it
within a NESTED PATH
operation. Data outside the scope defined by the
nested path is unaffected by the KEEP
pruning. Example 13-21 illustrates this.
These are the handlers allowed for operator KEEP
: IGNORE ON
MISSING
(default), ERROR ON MISSING
.
Related Topics
Parent topic: Oracle SQL Function JSON_TRANSFORM