[英]Neo4j Cypher : nested case statement
在cypher中是否有嵌套case语句或Decode或Map的方法?
Case when object1 = 'Animal'
then case when object2 = 'CAT' then 1 else 0
when object2 = 'RAT' then 2 else 0
else -9 end
end
没有语法问题,但是内部的值不会传递给外壳。 甚至试了一个变量别名。 我甚至尝试过以下方法:
case object1 = 'Animal'
when object2 = 'CAT' then 1
when object2 = 'RAT' then 2
end
这甚至都不起作用。 因为“case object1 ='Animal'”不被视为IF条件....只在WHEN中猜测。
如果使用嵌套案例:
UNWIND ['Human', 'Animal'] as var1
UNWIND ['CAT', 'RAT'] as var2
RETURN var1, var2,
CASE WHEN var1 = 'Animal'
THEN CASE WHEN var2 = 'CAT'
THEN 1
ELSE CASE WHEN var2 = 'RAT'
THEN 2
ELSE 0
END
END
ELSE -9
END as result
或者您可以使用地图:
WITH
{ Human: {
__default: 101
},
Animal: {
CAT: 1,
RAT: 2,
__default: 0
},
__default: -9
} as tree
UNWIND ['Human', 'Animal', 'Object'] as var1
UNWIND ['RAT', 'CAT', 'DOG'] as var2
RETURN var1, var2,
CASE WHEN tree[var1] IS NULL THEN tree.__default
ELSE CASE WHEN tree[var1][var2] IS NULL THEN tree[var1].__default
ELSE tree[var1][var2]
END
END as result
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.