繁体   English   中英

如果是,则返回现有列中的值

[英]if then else to return value in existing column

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

这是我正在尝试使用的方法,但是没有用。

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

该解决方案必须使用SQL,因为它一旦在Access中工作就可以在其他软件中使用。 我对此很陌生,因此将不胜感激。

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

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

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

您已经解释说,实际上,您希望IIf()为您提供[Group name]而不为Null的信息,否则为[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

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

SELECT IIf(Len([Group name] & '') = 0, [Description], [Group name]) As Customer

在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] = '';

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM