Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 在Access中添加新的计算字段_Ms Access - Fatal编程技术网

Ms access 在Access中添加新的计算字段

Ms access 在Access中添加新的计算字段,ms-access,Ms Access,我相信这个问题已经被问过很多次了,但我在谷歌上搜索了一下,有点迷路了,希望能得到一些帮助: 我想创建一个新的计算字段“accurateMatch”。如果[EMAIL]已填充,则accurateMatch应包含[EMAIL]的内容,否则应为空。这将是一个克隆的[电子邮件]现在,但我会添加嵌套的IIF,如果我可以得到这个部分的工作了 我有一张数十万条记录的桌子。在某些情况下,我们有[电子邮件],而在其他情况下,我们没有。 通过按字母顺序对表格进行排序,我知道大约有10万条记录没有电子邮件地址。 然后

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

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

我有一张数十万条记录的桌子。在某些情况下,我们有[电子邮件],而在其他情况下,我们没有。 通过按字母顺序对表格进行排序,我知道大约有10万条记录没有电子邮件地址。 然后,我打开查询生成器,在我创建的名为“accurateMatch”的新空文本字段中添加了一个表达式:

但是,结果不是生成生成数十万条记录的查询,其中一些记录有填充的[hasEmailForMatching]字段,而是一个空查询。字段标题在那里,但没有其他内容

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

下面是注释后面的SQL视图。我能提供任何其他信息来帮助这里的人们帮助我吗

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

读了答案后,我怀疑我的目标不明确。我想创建一个包含电子邮件的新字段。我读了一些MS文档,这些文档建议我运行QueryWizzard并构建查询,然后使用update。我有点迷茫,因为我只在过去几个月里使用SQL,我正在努力访问。

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

尝试改用
Len()

SELECT someList.accurateMatch
FROM someList
WHERE someList.accurateMatch = IIf(Len(EMAIL & "") <> 0, EMAIL, "")
选择someList.accurateMatch
来自某个列表
其中someList.accurateMatch=IIf(Len(EMAIL&“”)0,EMAIL“”)
编辑:

SELECT IIf(Len(EMAIL & "") <> 0, EMAIL, "") AS accurateMatch
FROM someList
选择IIf(Len(EMAIL&“”)0,EMAIL“”)作为精确匹配
来自某个列表

如果要创建新字段,请在
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

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

不清楚您在问什么,因为您还没有发布SQL。发布该片段实际上有点帮助。我的目标是添加一个新字段,如果已填充电子邮件,则为email;如果未填充电子邮件,则为first name+last name。我只是想在添加名称部分之前先运行表达式。看起来这个表达式在一个已经空了的字段上进行过滤(我刚刚创建了“accurateMatch”。我想创建一个新字段,该字段是电子邮件存在时电子邮件的内容,或者其他内容。@GordThompson在您撰写评论时发布了此评论。您是否遵循?好的,您也希望:
从为空的someList中选择someList.accurateMatch([someList].[email])
?我想我问错了问题。我不确定是应该删除并再次发布,还是继续使用此线程,但我想创建一个名为“accurateMatch”的新字段,其中包含[EMAIL]的内容(如果[EMAIL]已填充,否则为空)。(我知道它基本上是[EMAIL]的精确克隆)但我会在这部分工作后添加嵌套条件只需编辑你的问题。没问题。如果问题标题反映了不同的内容,也可以编辑。谢谢你的回答,但我认为我实际上问错了问题。我的错,很抱歉that@DougFirr所以,您实际上不需要使用WHERE子句。请参阅我的编辑。谢谢s@Linger我相信它是有效的,但我接受谋杀的答案只是因为我从屏幕上往下看,他的答案在上面。我没有其他经验或理由来区分哪个答案是“最好的”。再次感谢
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