A newer version of this documentation is available.

View Latest

Conditional Operators

  • reference

Couchbase Server Enterprise Edition 7.6 reaches End of Life on March 31, 2027. Please upgrade to 8.0.x by following Upgrade, or contact Couchbase Support.

Case expressions evaluate conditional logic in an expression.

case-expr ::= simple-case-expr | searched-case-expr
Syntax diagram

Simple Case Expressions

simple-case-expr ::= 'CASE' expr ('WHEN' expr 'THEN' expr)+ ('ELSE' expr)? 'END'
Syntax diagram

Simple case expressions allow for conditional matching within an expression. The evaluation process is as follows:

  • The first WHEN expression is evaluated. If it is equal to the search expression, the result of this expression is the THEN expression.

  • If it is not equal, subsequent WHEN clauses are evaluated in the same manner.

  • If none of the WHEN expressions are equal to the search expression, then the result of the CASE expression is the ELSE expression.

  • If no ELSE expression was provided, the result is NULL.

Example

The following example uses a CASE expression to categorize flights based on their departed-on date.

Query
WITH flight AS (
   [
      { "flight-id": "F101", "departed-on": "2025-12-01" },
      { "flight-id": "F201" },
      { "flight-id": "F301", "departed-on": "2025-12-02" }
   ]
)
SELECT
   `flight-id`,
   CASE `departed-on`
      WHEN "2025-12-01" THEN "First flight"
      WHEN "2025-12-02" THEN "Second flight"
      ELSE "Unknown flight"
   END AS category
FROM flight
Result
[
  {
    "flight-id": "F101",
    "category": "First flight"
  },
  {
    "flight-id": "F201",
    "category": "Unknown flight"
  },
  {
    "flight-id": "F301",
    "category": "Second flight"
  }
]

Searched Case Expressions

searched-case-expr ::= 'CASE' ('WHEN' cond 'THEN' expr)+ ('ELSE' expr)? 'END'
Syntax diagram

Searched case expressions allow for conditional logic within an expression. The evaluation process is as follows:

  • The first WHEN condition is evaluated.

  • If TRUE, the result of this expression is the THEN expression.

  • If not TRUE, subsequent WHEN clauses are evaluated in the same manner.

  • If none of the WHEN clauses evaluate to TRUE, then the result of the expression is the ELSE expression.

  • If no ELSE expression was provided, the result is NULL.

Example

The following example uses a CASE clause to determine whether a flight has departed. It scans all flights. If the flight has a departed-on date, it is provided in the result set. If not, the result shows the default text "not-departed-yet".

Query
WITH flight AS (
   [
      { "flight-id": "F101", "departed-on": "2025-12-01" },
      { "flight-id": "F201" },
      { "flight-id": "F301", "departed-on": "2025-12-10" }
   ]
)
SELECT
   `flight-id`,
   CASE
      WHEN `departed-on` IS NOT NULL THEN `departed-on`
      ELSE "not-departed-yet"
   END AS departed
FROM flight
Result
[
  {
    "flight-id": "F101",
    "departed": "2025-12-01"
  },
  {
    "flight-id": "F201",
    "departed": "not-departed-yet"
  },
  {
    "flight-id": "F301",
    "departed": "2025-12-10"
  }
]