MS Access选择空白/空/空文本记录

时间:2018-02-05 18:47:53

标签: ms-access

我试图确定测试空白/空/空文本记录的最佳方法。

我的意思是文本记录:

  • 空字符串(""
  • 任意数量的空格(例如" "

我使用下表(名为Table1)尝试了不同的查询条件:

Text Table

此处,Spaces记录包含任意数量的空格,Empty String记录包含空字符串(""),而Null记录只是

我首先想到的目标是使用如下的查询:

SELECT * FROM Table1 WHERE TextField IS NULL OR Trim(TextField)=""

这确实会返回三个目标记录:SpacesEmpty String& Null

然而有点奇怪,使用:

SELECT * FROM Table1 WHERE TextField = ""

返回Empty String记录 Spaces记录:

Spaces AND Empty String

这让我认为我的查询可以省略Trim函数并变为:

SELECT * FROM Table1 WHERE TextField IS NULL OR TextField=""
  • 但这可靠吗?
  • 选择空文本记录时这是最佳做法吗?

或者我考虑使用:

SELECT * FROM Table1 WHERE Nz(TextField)=""
  • 这种方法有缺点吗?
  • 有没有更好的方法来实现这一目标?

编辑:具体来说,我的问题最终是:

选择空白文字记录的最佳方式是什么?

2 个答案:

答案 0 :(得分:3)

对于普通文本,Access处理仅使用空格作为空字符串的字符串(例如SELECT " " = ""返回-1 = True)。

这意味着6月7日WHERE TextField & "" = ""引入的解决方案可能是最有效的解决方案。另一个竞争者是Nz函数,它由数据库引擎处理并稍微优化。

但是,在使用索引时,字符串连接和函数调用都会使索引无效。 <{1}}没有,如果WHERE TextField IS NULL OR TextField=""被编入索引,它将是迄今为止最快的。

如果你将富文本带入混音中,除了先将其转换为普通文本之外,你不会侥幸逃脱。在Access 2016中,当您在富文本字段中输入空格时,它实际上包含以下内容:TextField(您可以使用<div>&nbsp;</div>来查看)。

对于富文本字段,索引无论如何都不会起作用,因此您可以使用以下内容:

RichTextField & ""

答案 1 :(得分:0)

Nz(TextField)=""

处理空值和空字符串时最常使用的方法。

在Access中,将自动修剪长文本数据类型以节省空间,这就是Trim(TextField)与TextField相同的原因。如果您将其转换为富文本数据类型,这些将是不同的。在那种情况下:

TRIM(Nz(TextField))=""

应该涵盖所有基础。