5.5.2 ELEMENT_NUMBER関数の使用
ELEMENT_NUMBER
関数は、SQLグラフ問合せでのONE ROW PER VERTEX
句またはONE ROW PER STEP
句で定義されているイテレータ変数の場合のみ使用できます。
この関数はイテレータ変数を参照し、イテレータ変数が現在バインドしている順次要素番号を返します。パスは必ず頂点から始まり、頂点とエッジが交互になるため、最初の要素は頂点であり要素番号が1、2番目の要素はエッジであり要素番号が2、3番目の要素は頂点であり要素番号が3、のように続きます。たとえば、v1 -[e1]-> v2 -[e2]-> v3
というパスがあるとします。その後、次のように左から右へと要素番号が生成されます:
v1:1, e1:2, v2:3, e2:4, v3:5
したがって、頂点には必ず奇数の要素番号があり、エッジには偶数の要素番号があります。
ONE ROW PER STEP
を指定しており、パスが空である場合(つまり、1つの頂点のみがあり、エッジがない)、ELEMENT_NUMBER
では、イテレータ・エッジ変数または2番目のイテレータ頂点変数を参照するとNULL
が返されます。パスが空の場合、最初のイテレータ(頂点)変数のみがバインドされる単一のステップになります。
また、次の点にも注意してください。
ELEMENT_NUMBER
は、COLUMNS
句でのみ使用できます。ELEMENT_NUMBER
関数は、SQLグラフ問合せでONE ROW PER VERTEX
またはONE ROW PER STEP
が指定されている場合のみ使用できます。ELEMENT_NUMBER
では、イテレータ変数以外のタイプの変数は参照できません。
たとえば、次の問合せ例を考えてみます。この問合せではONE ROW PER STEP
が使用されており、このELEMENT_NUMBER
関数では、イテレータ変数v
によってバインドされているグラフ要素の要素番号が返されます。
SELECT *
FROM GRAPH_TABLE ( g
MATCH (a) ->{0,2} ONE ROW PER STEP (v,e,v2)
COLUMNS (ELEMENT_NUMBER(v) AS elementNumber)
)
詳細は、例5-20を参照してください。
親トピック: SQLグラフ問合せでのONE ROW PER句の使用