6.5.3 Using the ELEMENT_NUMBER Function
The ELEMENT_NUMBER function can only be used for iterator
variables that are defined in the ONE ROW PER VERTEX or ONE ROW PER
STEP clause in a SQL graph query.
The function references an iterator variable and returns the sequential
element number that the iterator variable currently binds to. Since paths always start
with a vertex and alternate between vertices and edges, the first element is a vertex
with element number 1, the second element is an edge with element number 2, the third
element is a vertex with element number 3, and so on. For example, consider the
following path: v1 -[e1]-> v2 -[e2]-> v3. Then the element numbers are
generated from left to right as shown:
v1:1, e1:2, v2:3, e2:4, v3:5
Therefore, vertices always have odd element numbers while edges have even element numbers.
If ONE ROW PER STEP is specified and the path is empty (that is, only
has a single vertex and no edges), then ELEMENT_NUMBER returns
NULL when the iterator edge variable or the second iterator vertex
variable is referenced. Note that empty paths result in single steps in which only the
first iterator (vertex) variable is bound.
Also, note the following:
ELEMENT_NUMBERcan be used only in theCOLUMNSclause.ELEMENT_NUMBERfunction can only be used ifONE ROW PER VERTEXorONE ROW PER STEPis specified in the SQL graph query.ELEMENT_NUMBERcannot reference any type of variable other than an iterator variable.
For instance, consider the following sample query. The query uses ONE ROW PER
STEP and the ELEMENT_NUMBER function returns the element
number of the graph element that is bound by the iterator variable
v.
SELECT *
FROM GRAPH_TABLE ( g
MATCH (a) ->{0,2} ONE ROW PER STEP (v,e,v2)
COLUMNS (ELEMENT_NUMBER(v) AS elementNumber)
)See Example 6-23 for more information.
Parent topic: Using ONE ROW PER Clause in a SQL Graph Query