我确信这个问题已被多次询问,但我做了谷歌并且有点迷失,所以希望得到一些帮助:
我想创建一个新的计算字段“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。
答案 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的特殊数据类型请尝试研究这个也许它会对你有所帮助。