neo4j 条件表达式 (CASE)

neo4j查询语言Cypher详解(一)--语法和子句 `neo4j`的图查询语言叫`Cypher`。Cypher的独特之处在于它提供了一种匹配模式和关系的可视化方式 阅读详情

通用条件表达式可以在 Cypher ®中使用构造来表达CASE。Cypher 中存在两种变体CASE:简单形式(用于将单个表达式与多个值进行比较)和通用形式(用于表达多个条件语句)。

CASE仅当您想在后续子句中使用结果时才可以用作RETURN或WITH的一部分。

示例图

下图用于以下示例:

要重新创建图表,请针对空的 Neo4j 数据库运行以下查询:

CREATE
  (alice:Person {name:'Alice', age: 38, eyes: 'brown'}),
  (bob:Person {name: 'Bob', age: 25, eyes: 'blue'}),
  (charlie:Person {name: 'Charlie', age: 53, eyes: 'green'}),
  (daniel:Person {name: 'Daniel', eyes: 'brown'}),
  (eskil:Person {name: 'Eskil', age: 41, eyes: 'blue'}),
  (alice)-[:KNOWS]->(bob),
  (alice)-[:KNOWS]->(charlie),
  (bob)-[:KNOWS]->(daniel),
  (charlie)-[:KNOWS]->(daniel),
  (bob)-[:MARRIED]->(eskil)

简单的CASE

简单CASE形式用于将单个表达式与多个值进行比较,类似于switch编程语言的构造。表达式由WHEN运算符求值,直到找到匹配项。如果未找到匹配项,则ELSE返回运算符中的表达式。如果没有ELSE案例且未找到匹配项,null则将返回。

句法

CASE test
  WHEN value [, value]* THEN result
  [WHEN ...]
  [ELSE default]
END

参数:

姓名描述

test

一种表达。

value

将与其结果进行比较的表达式test。

result

value如果匹配,则返回表达式作为输出test

default

如果没有值与测试表达式匹配则返回此表达式。

例子

MATCH (n:Person)
RETURN
CASE n.eyes
  WHEN 'blue'  THEN 1
  WHEN 'brown', 'hazel' THEN 2
  ELSE 3
END AS result, n.eyes,n.name

在 5.18 中引入

扩展的简单CASE形式允许明确指定比较运算符。简单形式CASE使用隐含的 equals( =) 比较器。

支持的比较器有:

句法

CASE test
  WHEN [comparisonOperator] value [, [comparisonOperator] value ]* THEN result
  [WHEN ...]
  [ELSE default]
END

参数:

姓名描述

test

一种表达。

comparisonOperator

受支持的比较运算符之一。

value

test使用给定的比较运算符与其结果进行比较的表达式。

result

value如果匹配则返回表达式作为输出test。

default

如果没有值与测试表达式匹配则返回此表达式。

例子

MATCH (n:Person)
RETURN n.name,
CASE n.age
  WHEN IS NULL, IS NOT TYPED INTEGER | FLOAT THEN "Unknown"
  WHEN = 0, = 1, = 2 THEN "Baby"
  WHEN <= 13 THEN "Child"
  WHEN < 20 THEN "Teenager"
  WHEN < 30 THEN "Young Adult"
  WHEN > 1000 THEN "Immortal"
  ELSE "Adult"
END AS result 
名词结果

行:5

"Alice"

"Adult"

"Bob"

"Young Adult"

"Charlie"

"Adult"

"Daniel"

"Unknown"

"Eskil"

"Adult"

通用的CASE

通用CASE表达式支持多个条件语句,类似于if-elseif-else编程语言的构造。按顺序评估每一行,直到true找到一个值。如果未找到匹配项,则返回运算符中的表达式ELSE。如果没有ELSE案例且未找到匹配项,null则将返回。

句法

CASE
  WHEN predicate THEN result
  [WHEN ...]
  [ELSE default]
END

参数:

姓名描述

predicate

谓词是求值的表达式BOOLEAN。在这种情况下,将测试谓词以找到有效的替代方案。

result

predicate如果计算结果为 ,则表达式作为输出返回true。

default

如果未找到匹配项,default则返回。

例子

MATCH (n:Person)
RETURN
CASE
  WHEN n.eyes = 'blue' THEN 1
  WHEN n.age < 40      THEN 2
  ELSE 3
END AS result, n.eyes, n.age
结果n.眼睛n.年龄

行:5

2

"brown"

38

1

"blue"

25

3

"green"

53

3

"brown"

null

1

"blue"

41

CASE针对null处理

处理null值时,您可能被迫使用通用CASE形式。下面的两个示例使用节点age的属性Daniel(null该属性具有值)来阐明差异。

简单的CASE
MATCH (n:Person)
RETURN n.name,
CASE n.age
  WHEN null THEN -1
  ELSE n.age - 10
END AS age_10_years_ago
n.age是要评估的表达式。请注意,该节点Daniel具有nullage 值。
跳过此分支,因为null它不等于任何其他值,包括null其自身。
执行采用ELSE分支,输出null因为n.age - 10等于null。
名词年龄_10_年前

行:5

"Alice"

28

"Bob"

15

"Charlie"

43

"Daniel"

null

"Eskil"

31

通用的CASE
MATCH (n:Person)
RETURN n.name,
CASE n.age
  WHEN null THEN -1
  ELSE n.age - 10
END AS age_10_years_ago
如果 之后没有提供表达式CASE,它将以其通用形式运行,支持每个分支中的谓词表达式。
此谓词表达式true对节点的计算结果为Daniel,因此返回此分支的结果。
名词年龄_10_年前

行:5

"Alice"

28

"Bob"

15

"Charlie"

43

"Daniel"

-1

"Eskil"

31

有关更多信息null,请参阅使用null。

CASE表达式和后续子句

表达式的结果CASE可用于设置节点或关系的属性。

MATCH (n:Person)
WITH n,
CASE n.eyes
  WHEN 'blue'  THEN 1
  WHEN 'brown' THEN 2
  ELSE 3
END AS colorCode
SET n.colorCode = colorCode
RETURN n.name, n.colorCode
名词n.颜色代码

行:5

"Alice"

2

"Bob"

1

"Charlie"

3

"Daniel"

2

"Eskil"

1

设置所有人的眼睛都是蓝色

MATCH (n:Person)
with n
set n.eyes = 'blue'

从零构建SQL血缘解析器:基于JSqlParser的实践指南 数据血缘分析是数据治理与数据仓库领域的核心概念,它通过追踪数据在系统内的流动、转换与依赖关系,构建起数据从源头到消费端的完整链路图。其基本原理是解析数据处理逻辑(如SQL、ETL脚本),提取并映射表与字段之间的衍生关系,形成一张可视化的数据关系网络。这项技术的核心价值在于实现数据资产的透明化管理,为影响分析、根因追溯、变更评估提供精准依据,广泛应用于数据质量监控、合规审计、成本优化等场景。本文聚焦于SQL血缘解析这一关键技术环节,针对数据开发中常见的复杂嵌套查询与字段映射难题,详细阐述了如何利用JSqlPa 阅读详情

相关推荐

MuleSoft AI编排实战:构建企业级LLM集成层

AI编排(AI Orchestration)是大语言模型(LLMs)与企业服务总线深度融合的关键范式,其本质不是简单调用API,而是将LLM作为认知层嵌入集成架构。它依托数据清洗、流程调度、安全治理等基础能力,解决输入脏乱、上下文断裂、输出难闭环等企业AI落地核心痛点。MuleSoft凭借DataWeave语义转换、Runtime Fabric弹性扩缩、Anypoint Exchange资产复用等AI就绪能力,成为支撑高合规、强互操作、可审计的Enterprise AI落地的理想集成层。本文聚焦真实产线中L

weixin_30600197的博客 468

neo4j使用-case查找

1.生成如图所示的图数据: 节点标签为Person,节点具有五类属性分别为:name,eye,age,array,对应上节所说的类型 关系存在两类:KNOWS和MARRIED 生成语句: -----------1.创建节点 CREATE(alice:Person{name:'Alice',eyes:'brown',age:38}) CREATE(charlie:Person{name:'Charlie',eyes:'green',age:53}) CREATE(bob:Person{nam..

xulili18714852395的博客 1148

【信息科学与工程学】【数据科学】 第四十四篇 数据湖 系列二 函数库01

2. 近似最近邻搜索(ANN): 通过HNSW等图索引模型加速,模型定义为构建一个层次化导航小世界图。依赖于消息队列(Kafka/Pulsar)、分布式文件系统(HDFS/S3)的客户端及连接库。依赖专门的向量检索库(如FAISS, Milvus)。管控目标: 召回率(Recall@K) > 95%,查询延迟 < 100ms。管控目标: < 1% (核心业务字段) 或 < 5% (一般字段)依赖数据处理框架(如Spark, Pandas)的核心统计函数。,通过牺牲精确性(ANN)来换取搜索速度的大幅提升。

weixin_49199313的博客 346

图数据库(四):Neo4j中Cypher语言更新操作

修改/添加属性 使用set进行一个属性修改,需要注意的是,如果本身没有surname这个属性,会自动增加属性。 match(n {name: 'Andy'}) set n.surname = 'Taylor' # 如果没有surname属性,会自动添加这个属性 return n.name, n.surname 还有一个高级写法,用到了case when: match(n {name: 'Andy'}) set( case when n.age = 3.

Hanscal 1519

智慧医院大数据平台四层架构与数据治理落地实践

医院大数据平台建设本质是解决数据孤岛、口径混乱与分析低效三大基础问题。其核心原理在于构建分层解耦的架构体系:以医院信息集成平台(HIIP)为中枢实现异构系统语义对齐,通过临床信息管理平台(CIMP)激活EMR沉睡数据,依托医院运营管理平台(HOMP)统一双时间轴建模,并由智慧GIS与安防平台延伸空间与行为维度分析能力。该技术路径显著提升数据一致性、实时性与临床可用性,广泛应用于医保控费、感控预警、手术质控及智能运维等关键场景。本文基于真实三甲医院落地案例,详解HIIP消息标准化、指标工厂、分层物化视图等工程

weixin_29038303的博客 250

PID不够用?试试用ADRC改造你的ArduCopter:从Simulink仿真到SITL测试全记录

本文详细介绍了如何将ADRC(自抗扰控制)算法集成到ArduPilot飞控中,以替代传统PID控制器。通过Simulink建模、参数整定和SITL仿真测试,展示了ADRC在抗扰动能力、响应速度和参数调节复杂度上的优势,特别适合无人机在强风扰动下的稳定控制。

weixin_32349093的博客 273

Neo4j Cypher CASE语句

在Cypher的语法中常见的CASE语句有两种:Simple CASE form、Generic CASE form。官方给的解释是: Simple CASE form: comparing an expression against multiple values; Generic CASE form: allowing for multiple conditionals to be expre...

家住海边,见过大风大浪 4821

HarmonyOS逆向降级实战:从鸿蒙2.0回退至EMUI 10.1的完整路径解析

本文详细解析了从HarmonyOS 2.0逆向降级至EMUI 10.1的完整操作流程,涵盖必备工具准备、数据备份策略及阶梯式降级步骤。针对华为手机用户遇到的兼容性问题,提供HiSuite和HiSuite Proxy工具的具体使用方法,并分享降级失败应急处理与系统优化技巧,帮助用户安全高效完成系统回退。

weixin_27741699的博客 1892

Neo4j笔记(二)Cypher(1)case语句

Cypher支持case条件表达式,它的逻辑类似于C语言中的if/else语句。一个CASE语句包含一个或多个WHEN-THEN子句,每个子句都是一个表达式。 case语句也可以包含一个ELSE子句,当之前的条件都不为真时,则执行该ELSE子语句,类似于C语言中的default。 CASE语句有两种语法:其中的一种语法等效于if-else语句,而另一种则类似于SWITCH语句。对于等效于IF-E...

haveanybody的博客 4188

大模型-高通平台性能测试示例-2

在QNN中,可以使用(genis-t2t-run)和这两个工具来进行推理的性能分析。支持在QNX操作系统或Android操作系统上进行性能分析。:提供基本的性能数据,如运行时间、资源消耗等。:提供更详细的性能数据,可能包括各个操作的执行时间、资源使用情况等。:是指在性能分析的同时进行代码质量检查,以发现潜在的问题。:是指跟踪和分析神经网络中各个操作的性能,以优化网络结构或参数。

点滴的岁月 1492

告别版本过低提示!微信3.9登录修复与聊天记录无缝迁移全攻略

本文详细解析了微信3.9版本过低提示的根源,并提供了完整的修复方案和聊天记录迁移指南。通过专用修复工具绕过版本检测,以及新旧版本聊天记录目录对比,帮助用户实现无缝迁移。特别提醒备份重要数据,确保操作安全。

weixin_42535461的博客 3140

Neo4j判断两个节点之间是否存在关系

方法一:case when MATCH (n:Test{id:"Q1"}),(n1:Test{id:"Q2"}) RETURN CASE WHEN (n)-[]-(n1) THEN "1" ELSE "0" END AS result 方法二:返回关系条数 MATCH (n:Test{id:"Q1"}),(n1:Test{id:"Q2"}),p=(n)-[]-(n1) return count(p) 不存在关系返回0,存在关系返回大于0的数 ...

u011250186的博客 2587

自动驾驶仿真(六)—— SIL软件在环仿真测试

自动驾驶仿真六—— SIL软件在环仿真测试1. 在环仿真测试2. SIL软件在环仿真测试2.1 模型配置参数2.2 S function生成实现2.3 结果对比3. 参考学习的书目教材 博主前面的博文已经简要介绍了Carsim、Prescan 与 Simulink 在 “V”型开发流程的一些应用,现今成熟的汽车控制系统软件都是以(Model Based Design,MBD)来开发,它以图形化的方式表达复杂的逻辑、代码可读性、可移植性、开发调试便利程度都大大增强,同时利用成熟的代码生成工具链,也避免了手工代

zhudj08的博客 8651

Cypher实战指南:从基础语法到高级子句解析

本文是Cypher实战指南,系统解析了从基础语法到高级子句的核心应用。作为Neo4j图数据库的查询语言,Cypher通过声明式语法直观描述图模式,高效处理高度关联数据。文章详细讲解了MATCH、WHERE、RETURN、WITH、MERGE等关键子句,并提供了性能优化与避坑指南,帮助开发者掌握从数据查询到复杂分析的完整技能。

q5r6s7的博客 767

SMILES:化学结构的线性表示方法

SMILES:化学结构的线性表示方法

jasminefeng的博客 1万+

手把手教你学Simulink——基于自动驾驶辅助系统的场景实例:车道保持辅助系统(LKA)的仿真与实现

本文通过Simulink实例讲解车道保持辅助系统(LKA)的实现方法。首先介绍LKA从预警到主动控制的技术演进,阐述其系统架构、核心组件和工作原理。重点演示基于自行车模型的车辆横向动力学建模过程,以及使用线性二次调节器(LQR)设计横向控制器的详细步骤。教程包含四个仿真场景测试,分析关键指标如控制精度、舒适性和响应性。最后探讨LKA技术的发展方向,强调人机协同的安全理念。该实例为自动驾驶辅助系统开发提供了完整的Simulink实践方案。

MHD0815的博客 182

Neo4j 之 Cypher 语法(1)

Cypher 语法

我真的不是cjcの博客 1434

基于CST的PCB通孔三维建模实例

本文简明扼要地描述了如何利用CST的参数化脚本快速生成PCB的通孔三维模型,非常适合于进行快速精准的PCB参数分析。

一只豌豆象的博客 1834

Cypher - [OPTION] MATCH

条件表达式 CASE test WHEN value THEN result [WHEN ...] [ELSE default] END CASE WHEN predicate THEN result [WHEN ...] [ELSE default] END match...

chengtouque9610的博客 539

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

【Cypher】RETURN 语句:将查询结果返回到客户端或调用者

RETURN 是 Cypher 查询中用于返回数据的关键语句,支持返回节点、关系、路径、属性、聚合结果等。RETURN 可与 MATCH、WITH、OPTIONAL MATCH 等语句结合使用,实现复杂数据查询。支持 DISTINCT、COUNT()、COLLECT()、SUM()、ORDER BY、LIMIT、SKIP 等高级操作,方便进行数据聚合、排序和分页。使用 RETURN 时要注意数据量控制,避免返回过多数据影响查询性能。通过掌握 RETURN 的各种用法,可以轻松实现灵活的数据查询和分析操作,提

彬彬侠的博客 1252

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【Cypher】表达式(Expression)

表达式(Expression) 是 Cypher 中用于计算值的基本单元,可以用于查询、过滤、更新数据以及进行复杂的数据转换。通过使用 WITH 拆解复杂查询、为属性创建索引、使用 CASE 进行条件判断,可以大幅提升查询性能。EXPLAIN 和 PROFILE 是优化复杂表达式和查询性能的利器,建议在优化前进行详细的查询分析。表达式可以是:常量(Literal): 直接指定的值,如字符串、数值、布尔值、数组等。属性访问: 访问节点或关系的属性。函数调用: 使用内置函数或用户定义的函数计算值。算术运算: 执

彬彬侠的博客 1275

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

《SQL基础教程》第二版 读书笔记

基于最近面试的内容,复习一下SQL的基础知识,找找感觉。 第一章 数据库和SQL 1、数据库database:存储数据的仓库,通过计算机加工而成的可以进行高效访问的数据集合。 2、数据库管理系统DBMS:用来管理数据库的计算机系统。可实现多个用户同时安全简单地操作大量数据。 DBMS的种类(以数据的保存格式分类): 层次数据库HDB:把数据通过层次结构(树形结构)的方式表现出来。 关系数据库RDBMS:由行和列组成的二维表来管理数据,使用SQL来操作数据。 面向对象数据库OODB:将数据以及对数据的操作集

joe_lee1的博客 926

上下文工程:AI落地的系统化操作系统

上下文工程不是高级提示词技巧,而是面向AI应用稳定性的系统级能力——它将时间维度、关系网络与策略规则整合为可配置、可验证、可演进的三维上下文空间。其核心原理在于解耦模型能力与业务认知,通过结构化注入替代模糊提示,从而提升回答一致性、知识可信度与角色专精度。技术价值体现在降低微调依赖、终结RAG知识冲突、支撑多角色协同与长周期任务记忆。典型应用场景覆盖金融风控、智能客服、HR政策问答及融资BP生成等强规则、多源异构、高动态性业务。本文聚焦四大经生产验证的系统实现模式,直击‘效果不稳定’‘上线即翻车’‘维护成本

weixin_30555515的博客 446

GLM-5-Code-Engine:面向工程落地的开源代码推理栈

大模型写代码已从语法补全迈向工程级生成——其核心在于对编程语言结构(AST)、项目上下文(Git/Confluence/Jira)和团队规范(安全策略/编码约定)的深度建模。GLM-5-Code-Engine并非单纯开源权重,而是融合符号缓存(symbol-cache)、多源上下文图谱(MSCI)与三层校验(SGOV)的可部署推理框架,显著提升首次生成通过率与生产就绪度。它适用于中高级工程师在Spring Boot、微服务重构、遗留系统适配等真实场景中的高信噪比代码生成与决策辅助,标志着AI编程正从‘工具增

cqwmy840702的博客 571

Diagram-Design:可执行状态机驱动的系统逻辑建模方法

状态机是描述系统行为的核心抽象,其本质是将离散状态、确定性转移与可观测事件结构化表达的技术范式。基于状态机的设计原理,通过强制语义定义、条件原子化与输入输出契约,显著提升逻辑保真度和跨角色协同效率。该方法兼具工程可验证性与业务可理解性,广泛应用于订单履约、IoT设备控制、支付对账等高可靠性场景。本文聚焦 diagram-design 这一轻量级、文本优先、可执行的状态机建模范式,强调逻辑即代码、图即规范的实践路径。

weixin_28630185的博客 221

Diagram-Design:构建可执行的系统逻辑骨架

在分布式系统与微服务架构实践中,可视化建模已超越传统流程图范畴,演进为承载数据契约、SLA承诺与状态迁移规则的可执行逻辑骨架。其核心原理是将业务语义、系统交互与运行时保障分层表达,通过事件驱动、状态机约束和决策点标注实现人机共读。技术价值在于提升跨角色协作效率、强化设计-开发-运维一致性,并支撑自动化校验与CI/CD集成。典型应用场景包括高可用支付对账、电商订单履约、金融风控决策等复杂业务系统。本文聚焦 diagram-design 方法论落地,深度融合 PlantUML 文本建模与工程实践,推动图表从静态

weixin_26905423的博客 137
上一篇: neo4j支Cypher expressions(表达式)
下一篇: neo4j Clauses语法条款
hellochenlian
博客等级 码龄17年 629粉丝 295原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hellochenlian

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值