2016-08-25 1 views
0

Cypher 쿼리에서 NaN을 리터럴로 어떻게 표현합니까?Neo4j Cypher에서 NaN의 리터럴 표현식은 무엇입니까?

상황

나는 데이터베이스에 NaN의 값이 :

match (a) with max(a.CONCENTRATION) as m return m 

m 
--- 
NaN 

Cypher reference in Neo4j

특별한 값의 결과가 저장되는 것으로이 가능하다는 것을 언급 반환됩니다 :

특수 값 java.lang.Double.NaN은 다른 모든 숫자보다 큰 것으로 간주됩니다. 내가 지금 거기에 있다고, 나는 다음과 같은 오류를 얻을 수 있기 때문에, 검색에서 그들을 일치하는 방법을 모른다, 그러나

을 시도 무엇

입력

match (a) where a.CONCENTRATION = NaN return a limit 10 

오류

Variable `NaN` not defined (line 1, column 35 (offset: 34)) 

다른 참조 내가 놓친하지 않는 한

Cypher reference in Neo4j

은, 문자 그대로 NaN를 언급하지 않습니다.

나는 'Cypher NaN'을 봤지만 가장 가까운 것은 직접 주소가 지정되지 않은 inf/NaN을 추가하는 방법입니다 (How to add infinity, NaN, or null values to a double[] property on a node in Cypher/Neo4j).

+1

http://stackoverflow.com/questions/27194534/how-to-determine-property-value-type-within-a-node-in-neo4j 어쩌면 당신은 그것을 확인했는데, 그것은 당신에게 조금 도움이 될 것입니다. – Supamiu

답변

3

는 문자를 지정하는 방법은 없습니다, 그러나 이것은 작동합니다 : 인수가 변환 할 수없는 경우

MATCH (a) 
WHERE TOFLOAT(a.CONCENTRATION) <> a.CONCENTRATION 
RETURN a 
LIMIT 10; 

TOFLOAT() 숫자로 (필요에 따라) NULL을 반환합니다. 그러나 인수가 변환 될 수있는 경우에도 is가 numeric이 아닌 경우 인수가 인수와 동일하지 않습니다.

관련 문제