【问题标题】:Adding a new calculated field in Access在 Access 中添加新的计算字段
【发布时间】:2014-06-18 16:37:29
【问题描述】:

我确信这个问题已经被问过很多次了,但是我在谷歌上搜索了一下,有点迷茫,所以希望得到一些帮助:

我想创建一个新的计算字段“accurateMatch”。如果填充 [EMAIL],则准确匹配应包含 [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 的新字段,其中存在电子邮件。我在阅读一些 MS 文档时遇到了一个兔子洞,这些文档建议我运行查询向导并构建查询,然后使用更新。自从过去几个月一直在使用 SQL 并且正在努力使用 Access 之后,我有点迷失了。

【问题讨论】:

  • 不清楚你在问什么,因为你还没有发布你的 SQL。
  • 发布sn-p实际上已经阐明了一点。我的目标是添加一个新字段,如果填充了电子邮件,则添加电子邮件,否则如果未填充电子邮件,则添加名字 + 姓氏。我只是想让表达式在添加名称部分之前先运行。看起来这个表达式正在过滤一个已经为空的字段(我刚刚创建了“accurateMatch”。我想创建一个新字段,当电子邮件存在时,它是电子邮件的内容,或者其他东西。@GordThompson 在你写的时候发布了这个评论你的。你关注吗?
  • 好的,你想要:SELECT someList.accurateMatch FROM someList WHERE IsNull([someList].[EMAIL]) 吗?
  • 我想我问错了问题。不确定我是否应该删除并再次发布或保留此线程,但这里有:如果填充了 [EMAIL],我想创建一个名为“accurateMatch”的新字段,其中包含 [EMAIL] 的内容,否则为空白“”。 (我知道它基本上是 [EMAIL] 的精确克隆,但我会在这部分工作后添加嵌套条件
  • 只需编辑您的问题。没问题。如果问题标题反映了不同的内容,请也进行编辑。

标签: ms-access


【解决方案1】:

如果您想创建一个新字段,请在 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

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

【讨论】:

    【解决方案2】:

    尝试改用Len()

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

    编辑:

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

    【讨论】:

    • 感谢您的回答,但我想我实际上问错了问题。我的错,对此感到抱歉
    • @Doug Firr 因此,您实际上不需要使用 WHERE 子句。查看我的编辑。
    • 谢谢@Linger,我确信它有效,但我接受 MurDeR 的回答只是因为我阅读了屏幕并且他的回答在最上面。我没有其他经验或理由来区分哪个答案是“最好的”。再次感谢
    【解决方案3】:

    SQL 数据库有一种称为 DBNull 的特殊数据类型,请尝试研究一下,也许它会对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-27
      • 1970-01-01
      • 2021-05-08
      • 2016-09-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多