簡體   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