gibt es keine Möglichkeit, die ich kenne, um explizit zu definieren, auch bekannt als Klammer mit
nicht so sicher sein kann. ;)
Zunächst einmal gibt es immer eine Assoziation oder Gruppierung, auch wenn es implizit ist, falls sie sequentiell ausgeführt werden. Schauen wir uns einen Fall an, in dem das wichtig ist.
MATCH (n) RETURN CASE WHEN false AND true OR true THEN 'and' ELSE 'or' END
(Das wird funktionieren, solange es mindestens einen Knoten in der Datenbank ist.)
Diese muss gleichwertig sein, entweder ((false and true) or true)
oder (false and (true or true))
, aber diese haben unterschiedliche Ergebnisse.
Die obige Abfrage gibt "und" im ersten Fall und "oder" im zweiten Fall zurück, um Ihnen anzuzeigen, was zuerst ausgeführt wurde. Es gibt "und" zurück, weil sie nacheinander gruppiert sind.
Dies gibt auch "und" zurück, da dies die implizierte Gruppierung ist, die Sie erhalten, wenn Sie die booleschen Operatoren sequenziell ausführen.
MATCH (n) RETURN CASE WHEN (false AND (true OR true)) THEN 'and' ELSE 'or' END
Aber das gibt "oder" zurück.
Das war eine wirklich langatmige Art zu sagen, dass das Hinzufügen von Klammern in der Tat die Antwort ist.
Just for fun, habe ich versucht, den Vorrang zu bestimmen, und es scheint, dass Neo hat und-Vorrang:
MATCH (n) RETURN CASE WHEN true or true and false THEN 'and' ELSE 'or' END
Wenn der oder die ersten Gebiete unterteilt:
(true or true) and false => true and false => false
Wenn die und ist zuerst gruppiert:
true or (true and false) => true or false => true
Die obige Abfrage gibt 'und' zurück und gibt an, dass das implizit gruppierte Konstrukt insgesamt als wahr ausgewertet wurde (und somit zuerst gruppiert wurde, obwohl es zuletzt sequenziell auftrat).