在Access中添加新的计算字段

时间:2014-06-18 16:37:30

标签: ms-access

我确信这个问题已被多次询问,但我做了谷歌并且有点迷失,所以希望得到一些帮助:

我想创建一个新的计算字段“accurateMatch”。如果填充[EMAIL],则exactMatch应包含[EMAIL]的内容,否则它应为空。这将是[EMAIL]的克隆,但如果我现在可以使这部分工作,我将添加嵌套的IIF。

我有一张包含数十万条记录的表格。在某些情况下,我们有[EMAIL]在其他情况下,我们没有。 我知道从字母顺序排序表有大约100k记录没有电子邮件地址。 然后我打开了查询构建器,并在我创建的一个名为“accurateMatch”的新空文本字段中添加了一个表达式:

IIf(IsNull([EMAIL]),"",[EMAIL])

但是,不是产生导致数十万条记录的查询,其中一些记录具有填充的[hasEmailForMatching]字段,结果是一个空查询。现场标题还有,但没有别的吗?

为什么会发生这种情况,我该如何解决?

以下是评论后面的SQL视图。我能提供的任何其他信息可以帮助人们帮助我吗?

SELECT someList.accurateMatch
FROM someList
WHERE (((someList.accurateMatch)=IIf(IsNull([EMAIL]),"",[EMAIL])));

我怀疑在阅读答案后我的目标不明确。我想创建一个包含电子邮件存在的EMAIL的新字段。我在readong的一个兔子洞里找到了一些MS文档,建议我运行查询wizzard并构建查询,然后使用update。自从过去几个月一直在使用SQL以来,我有点失落,并且正在努力使用Access。

3 个答案:

答案 0 :(得分:4)

如果要创建新字段,请在SELECT语句中使用表达式。

SELECT someList.EMAIL, IIF(IsNull(someList.EMAIL), "", someList.EMAIL) AS accurateMatch
FROM someList

这是做什么的?它按字段列出:

IIF - If Then
[condition] - IsNull(someList.EMAIL) - If someList.EMAIL is null, it will fall into this condition
true_expression - "" - If someList.EMAIL is NULL, you will see nothing
false_expression - [somelist.EMAIL] - If someList.EMAIL is NOT Null, you will see the email

您可以并排查看它们以比较结果。

答案 1 :(得分:1)

请尝试使用Len()

SELECT someList.accurateMatch
FROM someList
WHERE someList.accurateMatch = IIf(Len(EMAIL & "") <> 0, EMAIL, "")

修改

SELECT IIf(Len(EMAIL & "") <> 0, EMAIL, "") AS accurateMatch
FROM someList

答案 2 :(得分:-3)

SQL数据库有一个名为DBNull的特殊数据类型请尝试研究这个也许它会对你有所帮助。