Est-il possible d'exécuter une requête de chiffrement insensible à la casse sur neo4j?
Essayez ça: http://console.neo4j.org/
Quand je tape dans ceci:
start n=node(*)
match n-[]->m
where (m.name="Neo")
return m
il renvoie une ligne. Mais quand je tape dans ceci:
start n=node(*)
match n-[]->m
where (m.name="neo")
return m
il ne renvoie rien; car le nom est enregistré sous "Neo". Existe-t-il un moyen simple d'exécuter des requêtes insensibles à la casse?
Oui, en utilisant des expressions régulières insensibles à la casse:
WHERE m.name =~ '(?i)neo'
https://neo4j.com/docs/cypher-manual/current/clauses/where/#case-insensitive-regular-expressions
Une autre façon serait:
WHERE LOWER(m.Name) = LOWER("Neo")
Et si vous utilisez le client Neo4j (.NET):
Client.Cypher.Match("(m:Entity)")
.Where("LOWER(m.Name) = LOWER({name})")
.WithParam("name", inputName)
.Return(m => m.As<Entity>())
.Results
.FirstOrDefault();
Si quelqu'un cherche comment faire cela avec un paramètre, j'ai réussi à le faire comme ça.
query = "{}{}{}".format('Match (n) WHERE n.pageName =~ "'"(?i)", name, '" RETURN n')
et "nom" est la variable ou votre paramètre