gpt4 book ai didi

sql - 具有 NULL 值的 CASE 表达式

转载 作者:行者123 更新时间:2023-12-03 04:06:45 25 4
gpt4 key购买 nike

我正在努力了解如何检查进度案例表达式中的空值。我想查看是否存在列并使用它,如果不存在则使用后备列。例如,名字中的 William 将被 fn.special-char 中的 Bill 覆盖。

我有以下查询:

SELECT  
"PUB"."NAME"."LAST-NAME" as LastName,
CASE fn."SPECIAL-CHAR"
WHEN is null THEN "PUB"."NAME"."FIRST-NAME"
ELSE fn."SPECIAL-CHAR"
END as FirstName

FROM "PUB"."NAME"
LEFT OUTER JOIN "PUB"."DAT-DATA" fn on "PUB"."NAME"."NAME-ID" = fn."DAT-SRC-ID" and 11 = fn."FLD-FIELD-ID"

当我运行查询时,我得到:

ORBC Progress OpenEdge Wire Protocol driver][OPENEDGE]Syntax error SQL statement at or about "is null then "PUB"."NAME"."FIRST-" (10713)

如果我选择 * 我会看到一切。它只是不喜欢空部分。我还可以将when is null 更改为when 'bob' 并且它可以工作。

要在进度数据库查询中使用空值,我需要做一些不同的事情吗?

最佳答案

case 语句的简写变体(case expression when value then result ...)是表达式与给定值之间一系列相等条件的简写值(value)观。但是,null 不是一个值 - 它缺少值,必须使用 is 运算符显式求值,正如您尝试做的那样。但是,为了正确执行此操作,您需要使用 case 语法的稍长变体 - case when condition then result ...:

SELECT  
"PUB"."NAME"."LAST-NAME" as LastName,
CASE WHEN fn."SPECIAL-CHAR" IS NULL THEN "PUB"."NAME"."FIRST-NAME"
ELSE fn."SPECIAL-CHAR"
END as FirstName

FROM "PUB"."NAME"
LEFT OUTER JOIN "PUB"."DAT-DATA" fn on "PUB"."NAME"."NAME-ID" = fn."DAT-SRC-ID" and 11 = fn."FLD-FIELD-ID"

关于sql - 具有 NULL 值的 CASE 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32320296/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com