CASE表达式
CASE
表达式会遍历所有条件,并在满足第一个条件时停止读取后续条件,然后返回结果。如果不满足任何条件,将通过ELSE
子句返回结果。如果没有ELSE
子句且不满足任何条件,则返回NULL
。
Caution
nebula> RETURN \
CASE 2+3 \
WHEN 5 THEN 1 \
ELSE -1 \
AS result;
+--------+
| result |
+--------+
| 1 |
+--------+
CASE
WHEN <condition> THEN <result>
[WHEN ...]
[ELSE <default>]
END
参数 | 说明 |
---|---|
condition | 如果条件condition 为true,表示满足此条件。 |
result | condition 为true,则返回此result 。 |
default | 如果没有条件匹配,则返回该default 。 |
CASE \
WHEN v.name STARTS WITH "T" THEN "Yes" \
ELSE "No" \
END \
AS Starts_with_T;
+---------------------+---------------+
| Name | Starts_with_T |
+---------------------+---------------+
| "Tim" | "Yes" |
| "LaMarcus Aldridge" | "No" |
| "Tony Parker" | "Yes" |
+---------------------+---------------+
为了避免误用简单形式和通用形式,用户需要了解它们的差异。请参见如下示例:
示例本意为当玩家年龄大于35时输出Yes
。但是查看输出结果,年龄为36时输出的却是No
。
$$.player.age > 35
的值为,数据类型为boolean。