56
votes

It appears that LIKE is not supported in Cypher queries.

Is there any other construct that would perform the same task?

For instance:

start n = node(*) where n.Name LIKE('%SUBSTRING%') return n.Name, n;
4
The refcard is a really handy thing to bookmark: neo4j.com/docs/cypher-refcard/current It lists all supported string matching operators for example.F Lekschas

4 Answers

72
votes

using regular expressions: http://neo4j.com/docs/developer-manual/current/#query-where-regex

start n = node(*) where n.Name =~ '.*SUBSTRING.*' return n.Name, n;
26
votes

As of version 2.0, the preferred syntax uses MATCH.

e.g.

MATCH (n) where n.Name =~ '.*SUBSTRING.*' return n.Name, n;
23
votes

No Regexps needed:

start n = node(*) where n.Name contains "substring" return n.Name, n;

Go to the cypher refcard and scroll down to the Predicates section. You will find this and other useful stuff.

Want case-insensitive? Convert to lower case:

start n = node(*) where lower(n.Name) contains lower("substring") return n.Name, n;
17
votes

If you want to make it case insensitive

MATCH (n) WHERE n.name =~ '(?i).*SUBSTRING.*' RETURN n;