L'expression CASE
est une expression conditionnelle qui vous permet d'évaluer une ou plusieurs conditions et de retourner différents résultats basés sur ces conditions.
<case expression> ::= <simple case> | <searched case>
GQL prend en charge deux formes de l'expression CASE
:
Exemple de Graph
Les exemples suivants s'exécutent sur ce graph :
Pour créer ce graph, exécutez la requête suivante sur un graph vide :
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
L'expression CASE
simple évalue une seule valeur par rapport à plusieurs valeurs possibles, retournant le résultat associé à la première valeur correspondante.
<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> }... ]
Détails
<case operand>
est une expression de valeur sans parenthèses telle qu'une référence de variable, une fonction agrégée, etc.- Le
<when operand>
peut explicitement inclure les opérateurs suivants :- Opérateurs de comparaison :
=
,<>
,>
,<
,>=
,<=
(=
est implicitement utilisé lorsqu'aucun opérateur n'est spécifié) - Prédicats NULL :
IS NULL
,IS NOT NULL
- Prédicats de type de valeur :
IS TYPED
,IS NOT TYPED
- Prédicats normalisés :
IS NORMALIZED
,IS NOT NORMALIZED
- Prédicats dirigés :
IS DIRECTED
,IS NOT DIRECTED
- Prédicats étiquetés :
IS LABELED
,IS NOT LABELED
- Prédicats Source/Destination :
IS SOURCE OF
,IS NOT SOURCE OF
,IS DESTINATION OF
,IS NOT DESTINATION OF
- Opérateurs de comparaison :
- Lorsque le
<when operand list>
contient plusieurs<when operand>
, si n'importe quel<when operand>
est vrai, le<when operand list>
est considéré comme vrai. - Lorsque toutes les
<when operand list>
sont fausses, le<result>
spécifié parELSE
est retourné. SiELSE
est omis, une valeurnull
est retournée à la place.
MATCH (n:Paper WHERE n.score > 6)
RETURN CASE count(n) WHEN 3 THEN "Y" ELSE "N" END AS result
Résultat:
result |
---|
N |
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
Résultat:
n.title | n.score | scoreLevel |
---|---|---|
Efficient Graph Search | 6 | Low |
Optimizing Queries | 9 | High |
Path Patterns | 7 | Medium |
MATCH (n:Paper)
RETURN n.title,
CASE n.publisher
WHEN IS NULL THEN "Unknown"
ELSE n.publisher END AS Publisher
Résultat:
n.title | Publisher |
---|---|
Efficient Graph Search | PulsePress |
Optimizing Queries | Unknown |
Path Patterns | BrightLeaf |
Searched CASE
L'expression CASE
recherchée évalue plusieurs conditions, retournant le résultat associé à la première condition vérifiée.
<searched case> ::=
"CASE"
"WHEN" <condition> "THEN" <result>
[ { "WHEN" <condition> "THEN" <result> }... ]
[ "ELSE" <result> ]
"END"
Détails
<condition>
est une expression de valeur booléenne.- Lorsque toutes les
<condition>
sont fausses, le<result>
spécifié parELSE
est retourné. SiELSE
est omis, une valeurnull
est retournée à la place.
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
Résultat:
n.title | note |
---|---|
Optimizing Queries | Publisher N/A |
Efficient Graph Search | -1 |
Path Patterns | Zack |