What does the JSONB existence (?) operator check in PostgreSQL?
It checks if a specified key exists in a JSONB column.
Click to reveal answer
beginner
How do you use the JSONB existence operator to check if the key 'name' exists in a JSONB column called 'data'?
Use the query: SELECT * FROM table WHERE data ? 'name';
Click to reveal answer
beginner
What type of value does the JSONB existence (?) operator return?
It returns a boolean: true if the key exists, false if it does not.
Click to reveal answer
intermediate
Can the JSONB existence (?) operator check for keys inside nested JSON objects?
No, it only checks for top-level keys in the JSONB column.
Click to reveal answer
intermediate
What is the difference between the JSONB existence (?) operator and the containment (@>) operator?
The existence (?) operator checks for a single key's presence, while the containment (@>) operator checks if one JSONB contains another JSONB structure.
Click to reveal answer
Which operator checks if a key exists in a JSONB column in PostgreSQL?
A#>
B@>
C->
D?
✗ Incorrect
The '?' operator checks if a key exists in a JSONB column.
What does the query SELECT * FROM users WHERE info ? 'email'; return?
ARows where 'email' key exists in 'info' JSONB column
BRows where 'email' key does not exist
CRows where 'email' value equals true
DRows where 'info' is null
✗ Incorrect
The '?' operator filters rows where the specified key exists in the JSONB column.
Can the JSONB existence (?) operator check for nested keys inside JSON objects?
AYes, it checks all nested keys
BNo, only top-level keys
COnly if keys are arrays
DOnly if keys are strings
✗ Incorrect
The '?' operator only checks for top-level keys in the JSONB data.
What type of value does the JSONB existence (?) operator return?
ABoolean
BString
CInteger
DJSONB
✗ Incorrect
It returns a boolean indicating if the key exists.
Which operator would you use to check if a JSONB column contains a specific JSON structure?
A?
B->
C@>
D#>
✗ Incorrect
The '@>' operator checks if one JSONB contains another JSONB structure.
Explain how the JSONB existence (?) operator works and give an example query.
Think about checking if a key is present in a JSON object stored in a column.
You got /3 concepts.
Describe the limitations of the JSONB existence (?) operator regarding nested JSON keys.
Consider how deep the operator looks inside the JSON structure.
You got /3 concepts.
Practice
(1/5)
1.
What does the PostgreSQL JSONB existence operator ? check for?
easy
A. If a JSONB column contains any null values
B. If a JSONB column is empty
C. If a specified key or string exists at the top level in a JSONB column
D. If a JSONB column contains nested arrays
Solution
Step 1: Understand the operator's purpose
The ? operator checks for the presence of a key or string in JSONB data.
Step 2: Identify the scope of the check
It only checks the top-level keys or strings, not nested elements.
Final Answer:
If a specified key or string exists at the top level in a JSONB column -> Option C
Quick Check:
JSONB existence operator checks top-level keys [OK]
Hint: Remember: '?' checks top-level keys only in JSONB [OK]
Common Mistakes:
Thinking it checks nested keys
Confusing it with null or empty checks
Assuming it works on JSON type (not JSONB)
Believing it checks values instead of keys
2.
Which of the following is the correct syntax to check if the key 'name' exists in a JSONB column data?
SELECT * FROM users WHERE data ? 'name';
easy
A. SELECT * FROM users WHERE data ? name;
B. SELECT * FROM users WHERE data ? 'name';
C. SELECT * FROM users WHERE data ? "name";
D. SELECT * FROM users WHERE data ? :name;
Solution
Step 1: Check operator usage
The ? operator requires the key as a string literal in single quotes.
Step 2: Validate syntax correctness
SELECT * FROM users WHERE data ? 'name'; uses single quotes correctly; others either miss quotes or use invalid syntax.
Final Answer:
SELECT * FROM users WHERE data ? 'name'; -> Option B
Quick Check:
Key must be a single-quoted string [OK]
Hint: Use single quotes around key with '?' operator [OK]
Common Mistakes:
Omitting quotes around the key
Using double quotes instead of single quotes
Using parameter syntax (:name) incorrectly
Confusing key with column name without quotes
3.
Given the table products with a JSONB column attributes containing {"color": "red", "size": "M"}, what will this query return?
SELECT id FROM products WHERE attributes ? 'color';
medium
A. Syntax error due to incorrect operator usage
B. All product IDs where the value of 'color' is 'red'
C. All product IDs where the 'color' key does not exist
D. All product IDs where the 'color' key exists in attributes
Solution
Step 1: Understand the query condition
The condition attributes ? 'color' checks if the key 'color' exists in the JSONB column.
Step 2: Determine the query result
It returns all rows where 'color' is a key, regardless of its value.
Final Answer:
All product IDs where the 'color' key exists in attributes -> Option D
Quick Check:
Operator '?' checks key existence, not value [OK]
Hint: Remember '?' checks keys, not values [OK]
Common Mistakes:
Thinking it filters by key value
Assuming it returns rows without the key
Confusing '?' with containment operator
Expecting syntax error incorrectly
4.
Identify the error in this query that checks if the key "status" exists in the JSONB column info:
SELECT * FROM orders WHERE info ? status;
medium
A. Missing single quotes around the key 'status'
B. Using double quotes instead of single quotes
C. The operator '?' cannot be used with JSONB columns
D. The column name 'info' is invalid
Solution
Step 1: Check key syntax in operator
The key must be a string literal in single quotes when using the '?' operator.
Step 2: Identify the error in the query
The query uses status without quotes, causing a syntax error or wrong interpretation.
Final Answer:
Missing single quotes around the key 'status' -> Option A
Quick Check:
Keys must be single-quoted strings [OK]
Hint: Always quote keys with single quotes in '?' operator [OK]
Common Mistakes:
Using unquoted keys
Using double quotes instead of single quotes
Thinking '?' works on non-JSONB columns
Assuming column name is the problem
5.
You want to find all rows in the events table where the JSONB column details contains either the key 'location' or the key 'venue'. Which query correctly uses the JSONB existence operator to achieve this?
hard
A. SELECT * FROM events WHERE details ?| array['location', 'venue'];
B. SELECT * FROM events WHERE details ?& array['location', 'venue'];
C. SELECT * FROM events WHERE details ? array['location', 'venue'];
D. SELECT * FROM events WHERE details ? 'location' AND details ? 'venue';
Solution
Step 1: Understand the requirement
We want rows where either 'location' OR 'venue' keys exist in the JSONB column.
Step 2: Choose the correct operator
The ?| operator checks if any key in the array exists in the JSONB data.
Step 3: Compare options
SELECT * FROM events WHERE details ?| array['location', 'venue']; uses ?| array['location', 'venue'], which matches the requirement.
Final Answer:
SELECT * FROM events WHERE details ?| array['location', 'venue']; -> Option A
Quick Check:
Use '?|' for any key in array [OK]
Hint: Use '?|' with array for checking multiple keys [OK]
Common Mistakes:
Using OR with multiple '?' instead of '?|'
Using '?&' which requires all keys
Using AND instead of OR logic
Confusing single '?' with multiple keys
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.