Operators

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

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

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

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

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);

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);

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);

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

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);

Operator Precedence

Operator precedence in AGE is shown below: