String operators¶
You can use the following string operators for concatenating, querying, and matching.
Name | Description |
---|---|
+ | Concatenates strings. |
CONTAINS | Performs searchings in strings. |
(NOT) IN | Checks whether a value is within a set of values. |
(NOT) STARTS WITH | Performs matchings at the beginning of a string. |
(NOT) ENDS WITH | Performs matchings at the end of a string. |
Regular expressions | Perform string matchings using regular expressions. |
Note
All the string searchings or matchings are case-sensitive.
Examples¶
+
¶
nebula> RETURN 'a' + 'b';
+-----------+
| ("a"+"b") |
+-----------+
| "ab" |
+-----------+
nebula> UNWIND 'a' AS a UNWIND 'b' AS b RETURN a + b;
+-------+
| (a+b) |
+-------+
| "ab" |
+-------+
CONTAINS
¶
The CONTAINS
operator requires string types on both left and right sides.
nebula> MATCH (s:player)-[e:serve]->(t:team) WHERE id(s) == "player101" \
AND t.team.name CONTAINS "ets" RETURN s.player.name, e.start_year, e.end_year, t.team.name;
+---------------+--------------+------------+-------------+
| s.player.name | e.start_year | e.end_year | t.team.name |
+---------------+--------------+------------+-------------+
| "Tony Parker" | 2018 | 2019 | "Hornets" |
+---------------+--------------+------------+-------------+
nebula> GO FROM "player101" OVER serve WHERE (STRING)properties(edge).start_year CONTAINS "19" AND \
properties($^).name CONTAINS "ny" \
YIELD properties($^).name, properties(edge).start_year, properties(edge).end_year, properties($$).name;
+---------------------+-----------------------------+---------------------------+---------------------+
| properties($^).name | properties(EDGE).start_year | properties(EDGE).end_year | properties($$).name |
+---------------------+-----------------------------+---------------------------+---------------------+
| "Tony Parker" | 1999 | 2018 | "Spurs" |
+---------------------+-----------------------------+---------------------------+---------------------+
nebula> GO FROM "player101" OVER serve WHERE !(properties($$).name CONTAINS "ets") \
YIELD properties($^).name, properties(edge).start_year, properties(edge).end_year, properties($$).name;
+---------------------+-----------------------------+---------------------------+---------------------+
| properties($^).name | properties(EDGE).start_year | properties(EDGE).end_year | properties($$).name |
+---------------------+-----------------------------+---------------------------+---------------------+
| "Tony Parker" | 1999 | 2018 | "Spurs" |
+---------------------+-----------------------------+---------------------------+---------------------+
(NOT) IN
¶
nebula> RETURN 1 IN [1,2,3], "Yao" NOT IN ["Yi", "Tim", "Kobe"], NULL IN ["Yi", "Tim", "Kobe"];
+----------------+------------------------------------+-------------------------------+
| (1 IN [1,2,3]) | ("Yao" NOT IN ["Yi","Tim","Kobe"]) | (NULL IN ["Yi","Tim","Kobe"]) |
+----------------+------------------------------------+-------------------------------+
| true | true | __NULL__ |
+----------------+------------------------------------+-------------------------------+
(NOT) STARTS WITH
¶
nebula> RETURN 'apple' STARTS WITH 'app', 'apple' STARTS WITH 'a', 'apple' STARTS WITH toUpper('a');
+-----------------------------+---------------------------+------------------------------------+
| ("apple" STARTS WITH "app") | ("apple" STARTS WITH "a") | ("apple" STARTS WITH toUpper("a")) |
+-----------------------------+---------------------------+------------------------------------+
| true | true | false |
+-----------------------------+---------------------------+------------------------------------+
nebula> RETURN 'apple' STARTS WITH 'b','apple' NOT STARTS WITH 'app';
+---------------------------+---------------------------------+
| ("apple" STARTS WITH "b") | ("apple" NOT STARTS WITH "app") |
+---------------------------+---------------------------------+
| false | false |
+---------------------------+---------------------------------+
(NOT) ENDS WITH
¶
nebula> RETURN 'apple' ENDS WITH 'app', 'apple' ENDS WITH 'e', 'apple' ENDS WITH 'E', 'apple' ENDS WITH 'b';
+---------------------------+-------------------------+-------------------------+-------------------------+
| ("apple" ENDS WITH "app") | ("apple" ENDS WITH "e") | ("apple" ENDS WITH "E") | ("apple" ENDS WITH "b") |
+---------------------------+-------------------------+-------------------------+-------------------------+
| false | true | false | false |
+---------------------------+-------------------------+-------------------------+-------------------------+
Regular expressions¶
Note
Regular expressions cannot work with native nGQL statements (GO
, FETCH
, LOOKUP
, etc.). Use it in openCypher only (MATCH
, WHERE
, etc.).
NebulaGraph supports filtering by using regular expressions. The regular expression syntax is inherited from std::regex
. You can match on regular expressions by using =~ 'regexp'
. For example:
nebula> RETURN "384748.39" =~ "\\d+(\\.\\d{2})?";
+--------------------------------+
| ("384748.39"=~"\d+(\.\d{2})?") |
+--------------------------------+
| true |
+--------------------------------+
nebula> MATCH (v:player) WHERE v.player.name =~ 'Tony.*' RETURN v.player.name;
+---------------+
| v.player.name |
+---------------+
| "Tony Parker" |
+---------------+
Last update:
March 13, 2023