8.2.3 Выражения Case
Cypher поддерживает выражения CASE, которые представляют собой обобщенные условные выражения, подобные операторам if/else в других языках. Имеется две формы выражения CASE — простая и общая.
8.2.4 Простой CASE
Строковые литералы Выражение вычисляется и сравнивается в порядке следования предложений WHEN, пока не обнаружится совпадение. Если совпадений обнаружено не будет, используется предложение ELSE, или null, если предложение ELSE отсутствует.могут содержать следующие escape-последовательности.
Синтаксис:
CASE test WHEN value THEN result [WHEN ...] [ELSE default] END
Аргументы:
- test: Допустимое выражение.
- value: Выражение, результат которого будет сравниваться выражением test.
- result: Это выражение используется в качестве возвращаемого значения, если выражение value совпало с выражением test.
- default: Выражение, возвращаемое, если совпадений не обнаружено.
Запрос.
MATCH n RETURN CASE n.eyes WHEN 'blue' THEN 1 WHEN 'brown' THEN 2 ELSE 3 END AS result
Таблица 8.1 Результат
result |
---|
2 |
1 |
2 |
1 |
3 |
8.2.5 Общий CASE
Последовательно оцениваются предикаты, пока не будет получено значение true; возвращается соответствующее значение result. Если ни одно из сравнений не дает true, используется выражение в предложении ELSE, или же null, если предложение ELSE отсутствует.
Синтаксис:
CASE WHEN predicate THEN result [WHEN ...] [ELSE default] END
Аргументы:
- predicate: Предикат, который проверяется на истинность.
- result: Выражение result, которое будет использовано, если предикат дает true.
- default: Выражение, которое будет использовано, если все проверки завершились неудачно.
Запрос
MATCH n RETURN CASE WHEN n.eyes = 'blue' THEN 1 WHEN n.age < 40 THEN 2 ELSE 3 END AS result
Таблица 8.2 Результат
result |
---|
3 |
1 |
2 |
1 |
3 |