web-dev-qa-db-ja.com

大文字と小文字を区別しない暗号クエリの実行

Neo4jで大文字と小文字を区別しない暗号クエリを実行することは可能ですか?

それを試してください: http://console.neo4j.org/

これを入力すると:

start n=node(*) 
match n-[]->m 
where (m.name="Neo") 
return m

1行を返します。しかし、これを入力すると:

start n=node(*) 
match n-[]->m 
where (m.name="neo") 
return m

何も返しません。名前が「Neo」として保存されているためです。大文字と小文字を区別しないクエリを実行する簡単な方法はありますか?

37
gzg

はい、大文字と小文字を区別しない正規表現を使用します。

WHERE m.name =~ '(?i)neo'

https://neo4j.com/docs/cypher-manual/current/clauses/where/#case-insensitive-regular-expressions

48
Volker Pacher

別の方法は:

WHERE LOWER(m.Name) = LOWER("Neo")

また、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

パラメータでこれを行う方法を誰かが探しているなら、私はこのようにしてなんとかしました。

query = "{}{}{}".format('Match (n) WHERE n.pageName =~ "'"(?i)", name, '" RETURN n')

"name"は変数またはパラメーターです

1