私は2つのテストがによるCypher - myNode <> NULLとmyNode IS NOT NULLの違いは何ですか?
Added 1 label, created 1 node, deleted 1 node, statement completed in 0 ms.
そして
Node with id 1738 has been deleted in this transaction
を返し
CREATE (a:TEST)
DELETE a
WITH a
WHERE a IS NOT NULL
RETURN (a:TEST)
を返し
CREATE (a:TEST)
DELETE a
WITH a
WHERE a <> NULL
RETURN (a:TEST)
照会してい、 "<"は不等式演算子です。だから私の理解は、 "<> NULL"と "a IS NOT NULL"はCypherで同等です。少なくとも、私は "IS NOT NULL"がより信頼性の高いフィルタになると期待しています(専用の比較演算子なので)。これは、同じトランザクション内でノードを作成して削除する際に問題になる可能性があるようですが、IS NOT NULLに関するドキュメントでは、(それが暗黙のうちに)「演算子です」とは言わないので、微妙な敬意があります。
なぜa <> NULL
はa IS NOT NULL
の場合に機能しますか? AKA、これらの2つの比較の間の相違は何ですか?
Iはサイファーバージョン3.1、およびサイファーにおいて3.1.1
そして今、私はRETURN aの代わりにRETURN(a:TEST)を使用していたことに気付きました。そのため、削除されたノードではなくパターンマッチが返されていました。この場合、戻り値はおそらくNULLになるはずです。ありがとう! – Tezra
あなたはそうです。 'RETURN a'だけではエラーは発生せず、空のノードが返されます。 '(a:Test)'では、グラフでIDで再度一致させようとしていますが、ノードはもはやマッチングのために利用できません。おそらく、 'a'が既にノードを参照しているので、再度一致する必要はありません。この場合、必要となるのは':Test'ラベルをアサートするフィルタだけです。 –