5.5.2 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_NUMBER
can be used only in theCOLUMNS
clause.ELEMENT_NUMBER
function can only be used ifONE ROW PER VERTEX
orONE ROW PER STEP
is specified in the SQL graph query.ELEMENT_NUMBER
cannot 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 5-20 for more information.
Parent topic: Using ONE ROW PER Clause in a SQL Graph Query