我的意思是文本记录:
""
)" "
)我使用下表(名为Table1
)尝试了不同的查询条件:
此处,Spaces
记录包含任意数量的空格,Empty String
记录包含空字符串(""
),而Null
记录只是
我首先想到的目标是使用如下的查询:
SELECT * FROM Table1 WHERE TextField IS NULL OR Trim(TextField)=""
这确实会返回三个目标记录:Spaces
,Empty String
& Null
。
然而有点奇怪,使用:
SELECT * FROM Table1 WHERE TextField = ""
返回Empty String
记录和 Spaces
记录:
这让我认为我的查询可以省略Trim
函数并变为:
SELECT * FROM Table1 WHERE TextField IS NULL OR TextField=""
或者我考虑使用:
SELECT * FROM Table1 WHERE Nz(TextField)=""
编辑:具体来说,我的问题最终是:
选择空白文字记录的最佳方式是什么?
答案 0 :(得分:3)
对于普通文本,Access处理仅使用空格作为空字符串的字符串(例如SELECT " " = ""
返回-1 = True)。
这意味着6月7日WHERE TextField & "" = ""
引入的解决方案可能是最有效的解决方案。另一个竞争者是Nz
函数,它由数据库引擎处理并稍微优化。
但是,在使用索引时,字符串连接和函数调用都会使索引无效。 <{1}}没有,如果WHERE TextField IS NULL OR TextField=""
被编入索引,它将是迄今为止最快的。
如果你将富文本带入混音中,除了先将其转换为普通文本之外,你不会侥幸逃脱。在Access 2016中,当您在富文本字段中输入空格时,它实际上包含以下内容:TextField
(您可以使用<div> </div>
来查看)。
对于富文本字段,索引无论如何都不会起作用,因此您可以使用以下内容:
RichTextField & ""
答案 1 :(得分:0)
Nz(TextField)=""
处理空值和空字符串时最常使用的方法。
在Access中,将自动修剪长文本数据类型以节省空间,这就是Trim(TextField)与TextField相同的原因。如果您将其转换为富文本数据类型,这些将是不同的。在那种情况下:
TRIM(Nz(TextField))=""
应该涵盖所有基础。