2012-11-18 4 views
24

neo4jで大文字と小文字を区別しないCypherクエリを実行できますか?大文字と小文字を区別しないCypherクエリの実行

はそれを試してみてください: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 

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

答えて

34

はい、大文字小文字を区別しない正規表現を使用することにより:

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

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

+2

リンクが死んでいます。それは[http://neo4j.com/docs/developer-manual/current/#query-general](html/neo4j.com/docs/developer-manual/current/#query-general)に移されます。あなたの答えには解決策が含まれていますが、誰かがリンクをクリックするとリンクが更新される可能性があります。 – Gandalf

+0

=〜演算子はインデックスを使用しません – Abhi

+1

ここでパラメータを渡すにはどうすればよいですか? $ param 'と ''(?​​!) '+ $ param'は機能しません – vladkras

7

別の方法を次のようになります。

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(); 
+0

このソリューションは、パラメータの適用が容易です – thangdc94