0

在使用 SQL 的 Access 2016 中。我需要添加一个名为“客户”的新列。该值基于“组名”中是否有数据,然后使用“组名”。如果“组名”为空,则使用“描述”中的数据。

这是我正在尝试使用的,但它不起作用。

SELECT iIf(ISempty([group name])= FALSE,[Group name],[Description]) as Customer

该解决方案必须使用 SQL,因为一旦它在 Access 中工作,它就会在另一个软件中使用。我对此很陌生,因此将不胜感激任何帮助。

4

2 回答 2

1

IsEmpty 函数返回一个布尔值,指示变量是否已初始化。”

当您将该函数应用于您的[Group name]字段时,它将始终返回 False,这意味着该IIf()表达式将始终为您提供[Group name]...

SELECT IIf(ISempty([group name])= FALSE,[Group name],[Description]) as Customer

您解释说,您实际上想在它不是 Null 时IIf()给您,否则。为此,您可以替换为:[Group name][Description]IsNull()IsEmpty()

SELECT IIf(IsNull([Group name])=False, [Group name], [Description]) As Customer

以下是完成同一件事的其他几种方法:

SELECT IIf([Group name] Is Null, [Description], [Group name]) As Customer
SELECT Nz([Group name], [Description]) As Customer

哎呀!您实际上说的是“空白”,但我将其解释为 Null。如果空白也可能意味着一个空字符串,请使用它在包含 Null 或空字符串[Description]时为您提供...[Group name]

SELECT IIf(Len([Group name] & '') = 0, [Description], [Group name]) As Customer
于 2016-05-27T16:10:03.147 回答
0

在 ANSI SQL 中,这可以在两个更新语句中完成:

-- First replace empty [Customer] with [Group Name]
Update [TargetTable] Set [Customer] = [Group Name]
Where [Customer] IS NULL OR [Customer] = '';

-- Then replace still empty [Customer] with [Description]
Update [TargetTable] Set [Customer] = [Description]
Where [Customer] IS NULL OR [Customer] = '';
于 2016-05-27T15:52:12.247 回答