String Specific Comparison Operators
Data Setup
SELECT * FROM cypher('graph_name', $$CREATE (:Person {name: 'John'}),(:Person {name: 'Jeff'}),(:Person {name: 'Joan'}),(:Person {name: 'Bill'})$$) AS (result agtype);
Starts With
Performs case-sensitive prefix searching on strings.
SELECT * FROM cypher('graph_name', $$MATCH (v:Person)WHERE v.name STARTS WITH "J"RETURN v.name$$) AS (names agtype);
Results
| names | 
| “John” | 
| “Jeff” | 
| “Joan” | 
| 3 rows | 
Contains
Performs case-sensitive inclusion searching in strings.
SELECT * FROM cypher('graph_name', $$MATCH (v:Person)WHERE v.name CONTAINS "o"RETURN v.name$$) AS (names agtype);
Results
| names | 
| “John | 
| “Joan | 
| 2 rows | 
Ends With
Performs case-sensitive suffix searching on strings.
SELECT * FROM cypher('graph_name', $$MATCH (v:Person)WHERE v.name ENDS WITH "n"RETURN v.name$$) AS (names agtype);
Results
| names | 
| “John” | 
| “Joan” | 
| 2 rows | 
Regular Expressions
AGE supports the use of POSIX regular expressions using the =~ operator. By default =~ is case sensitve.
Basic String Matching
The =~ operator when no special characters are given, act like the = operator.
SELECT * FROM cypher('graph_name', $$MATCH (v:Person)WHERE v.name =~ 'John'RETURN v.name$$) AS (names agtype);
Results
| names | 
| “John” | 
| 1 rows | 
Case insensitive search
Adding (?i) at the beginning of the string will make the comparison case insensitive
SELECT * FROM cypher('graph_name', $$MATCH (v:Person)WHERE v.name =~ '(?i)JoHn'RETURN v.name$$) AS (names agtype);
| names | 
| “John” | 
| 1 rows | 
The . Wildcard
The . operator acts as a wildcard to match any single character.
SELECT * FROM cypher('graph_name', $$MATCH (v:Person)WHERE v.name =~ 'Jo.n'RETURN v.name$$) AS (names agtype);
| names | 
| “John” | 
| “Joan” | 
| 2 rows | 
The * Wildcard
The * wildcard after a character will match to 0 or more of the previous character
SELECT * FROM cypher('graph_name', $$MATCH (v:Person)WHERE v.name =~ 'Johz*n'RETURN v.name$$) AS (names agtype);
| names | 
| “John” | 
| 1 rows | 
The + Operator
The + operator matches to 1 or more the previous character.
SELECT * FROM cypher('graph_name', $$MATCH (v:Person)WHERE v.name =~ 'Bil+'RETURN v.name$$) AS (names agtype);
Results
| names | 
| “Bill” | 
| 1 row | 
The . and * wildcards together
You can use the . and * wildcards together to represent the rest of a string.
SELECT * FROM cypher('graph_name', $$MATCH (v:Person)WHERE v.name =~ 'J.*'RETURN v.name$$) AS (names agtype);
| names | 
| “John” | 
| “Jeff” | 
| “Joan” | 
| 2 rows | 
Operator Precedence
Operator precedence in AGE is shown below:
| Precedence | Operator | |
| 1 | . | Property Access | 
| 2 | [] | Map and List Subscripting | 
| () | Function Call | |
| 3 | STARTS WITH | Case-sensitive prefix searching on strings | 
| ENDS WITH | Case-sensitive suffix searching on strings | |
| CONTAINS | Case-sensitive inclusion searching on strings | |
| =~ | Regular expression string matching | |
| 4 | - | Unary Minus | 
| 5 | IN | Checking if an element exists in a list | 
| IS NULL | Checking a value is NULL | |
| IS NOT NULL | Checking a value is not NULL | |
| 6 | ^ | Exponentiation | 
| 7 | * / % | Multiplication, division and remainder | 
| 8 | + - | Addition and Subtraction | 
| 9 | = <> | For relational = and ≠ respectively | 
| < <= | For relational < and ≤ respectively | |
| > >= | For relational > and ≥ respectively | |
| 10 | NOT | Logical NOT | 
| 11 | AND | Logical AND | 
| 12 | OR | Logical OR | 
