在 CASE 中使用条件语句不能正确评估表达式? neo4j

using conditional in CASE does not evaluate expressions properly ? neo4j

我想 trim 字符串服务器端。

考虑一下:属性 是字符串,如果长度超过 10 个字符,我想 trim 它。 考虑这个查询:

Match (r)
with r, case r.what
    when size(r.what) > 10 then substring(r.what, 0, 10)
    else r.what end as w
return {what : w, len : size(w)} as props 

我希望 size(r.what) > 10 计算结果为真,并且 substring(r.what, 0, 10) 赋值给变量 ww 总是等于原始字符串 'r.what',不管长短。 len 报告正确。

我做错了什么? 我正在使用 neo4j 4.4

去掉CASE后面的r.what。您的查询应如下所示:

MATCH (r)
WITH r,
     CASE
       WHEN size(r.what) > 10 THEN substring(r.what, 0, 10)
       else r.what
     END AS w
RETURN {what : w, len : size(w)} AS props 

当你在 CASE 之后添加一个表达式时(在你的问题中,r.what),它的值将与你放在每个 WHEN.[=18 上的任何值进行比较=]

来源: