UltipaDocs
Products
Solutions
Resources
Company
Start Free Trial
UltipaDocs
Start Free Trial
  • Introduction
    • Overview
    • Node and Edge Patterns
    • Path Patterns
    • Quantified Paths
    • Shortest Paths
    • Graph Patterns
    • Overview
    • Typed Graph
    • Open Graph
    • Graph Sharding and Storage
    • Constraints
    • Unique Identifiers
    • INSERT
    • INSERT OVERWRITE
    • UPSERT
    • SET
    • REMOVE
    • DELETE
    • Query Composition
    • Result Table and Visualization
    • MATCH
    • OPTIONAL MATCH
    • FILTER
    • LET
    • FOR
    • ORDER BY
    • LIMIT
    • SKIP
    • CALL
    • RETURN
    • Composite Query
    • NEXT
    • All Functions
    • Scalar Functions
    • Path Functions
    • Aggregate Functions
    • Mathematical Functions
    • Trigonometric Functions
    • String Functions
    • List Functions
    • Datetime Functions
    • Spatial Functions
    • Label Functions
    • Record Functions
    • Table Functions
  • Operators
  • Predicates
    • CASE
    • NULLIF
    • COALESCE
    • LET Value Expression
    • Value Query Expression
    • Index
    • Full-text Index
    • Vector Index
    • Spatial Index
    • Overview
    • Managing HDC Graphs
    • HDC Graph Queries
  • Transaction
  • Trigger
  • Stored Procedure
    • Process
    • Session
    • Job
    • Execution Plan
    • Variables
    • Values and Types
    • Comments
    • Reserved Words
    • Syntactic Notation
  • Access Control
  • GQL Conformance
  1. Docs
  2. /
  3. ISO GQL
  4. /
  5. Expressions

CASE

The CASE expression is a conditional expression that allows you to evaluate one or more conditions and return different results based on those conditions.

GQL supports two forms of the CASE expression:

  • Simple CASE
  • General CASE

Example Graph

The following examples run against this graph:

To create this graph, run the following query against an empty graph:

GQL
INSERT (p1:Paper {_id:'P1', title:'Efficient Graph Search', score:6, author:'Alex', publisher:'PulsePress'}),
       (p2:Paper {_id:'P2', title:'Optimizing Queries', score:9, author:'Alex'}),
       (p3:Paper {_id:'P3', title:'Path Patterns', score:7, author:'Zack', publisher:'BrightLeaf'}),
       (p1)-[:Cites {weight:2}]->(p2),
       (p2)-[:Cites {weight:1}]->(p3)

Simple CASE

The simple CASE expression evaluates a single value against multiple possible values, returning the result associated with the first matching value.

Syntax
<simple case> ::=
  "CASE" <case operand>
    "WHEN" <when operand list> "THEN" <result>
    [ { "WHEN" <when operand list> "THEN" <result> }... ]
    [ "ELSE" <result> ]
  "END"

<when operand list> ::= <when operand> [ { "," <when operand> }... ]

Details

  • <case operand> is an expression such as a variable reference, an aggregate function, etc.
  • Execution Flow:
    • The <case operand> is compared sequentially against each <when operand list>.
    • If a <when operand list> matches <case operand>, the corresponding <result> is returned.
    • If no matches are found, returns the <result> specified by the ELSE clause. If ELSE is omitted, null is returned by default.
  • When the <when operand list> contains multiple <when operand>s, if any <when operand> evaluates to true, the <when operand list> is considered true.
  • The <when operand> can explicitly include operators such as =, <>, >, <, >=, <=, IS NULL, IS NOT NULL, etc. The = is implicitly used when no operator but only a constant is specified.
GQL
MATCH (n:Paper WHERE n.score > 6)
RETURN CASE count(n) WHEN 3 THEN "Y" ELSE "N" END AS result

Result:

result
N
GQL
MATCH (n:Paper)
RETURN n.title, n.score,
CASE n.score
  WHEN <7 THEN "Low"
  WHEN 7,8 THEN "Medium"
ELSE "High" END AS scoreLevel

Result:

n.titlen.scorescoreLevel
Efficient Graph Search6Low
Optimizing Queries9High
Path Patterns7Medium
GQL
MATCH (n:Paper)
RETURN n.title,
CASE n.publisher
  WHEN IS NULL THEN "Unknown"
ELSE n.publisher END AS Publisher

Result:

n.titlePublisher
Efficient Graph SearchPulsePress
Optimizing QueriesUnknown
Path PatternsBrightLeaf

General CASE

The general CASE expression evaluates multiple conditions, returning the result associated with the first condition that evaluates to true.

Syntax
<general case> ::=
  "CASE"
    "WHEN" <condition> "THEN" <result>
    [ { "WHEN" <condition> "THEN" <result> }... ]
    [ "ELSE" <result> ]
  "END"

Details

  • The <condition> is a boolean value expression that evaluates to true or false.
  • Execution Flow:
    • The <condition>s are evaluated sequentially.
    • When a <condition> evaluates to true, the corresponding <result> is returned immediately.
    • If no <condition>s are true, returns the <result> specified by the ELSE clause. If ELSE is omitted, null is returned by default.
GQL
MATCH (n:Paper)
RETURN n.title,
CASE
  WHEN n.publisher IS NULL THEN "Publisher N/A"
  WHEN n.score < 7 THEN -1
  ELSE n.author
END AS note

Result:

n.titlenote
Optimizing QueriesPublisher N/A
Efficient Graph Search-1
Path PatternsZack