web-dev-qa-db-fra.com

Exécution d'une requête de chiffrement insensible à la casse

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?

37
gzg

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

48
Volker Pacher

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();
10
rotgers

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

1
Mursy Alguineedy