我正在尝试确定测试空白/空/空文本记录的最佳方法。
我所说的文本记录是:
""
)" "
)我已经使用下表(名为
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)=""
编辑:具体来说,我的问题最终是:
选择空白文本记录的最佳方法是什么?
最佳答案
对于普通文本,Access会将仅包含空格的字符串作为空字符串处理(例如SELECT " " = ""
返回-1 = True)。
这意味着6月7日推出的解决方案WHERE TextField & "" = ""
可能是最有效的解决方案。另一个竞争者是Nz
函数,该函数由数据库引擎处理并进行了一些优化。
但是,当使用索引时,字符串连接和函数调用都会使索引无效。 WHERE TextField IS NULL OR TextField=""
不会,但如果对TextField
建立索引,它将是迄今为止最快的。
如果您将富文本引入混合中,那么除了将其首先投射为普通文本之外,您将无所away形。在Access 2016中,当您在富文本字段中输入空格时,它实际上包含以下内容:<div> </div>
(您可以使用RichTextField & ""
看到它)。
对于富文本字段,索引无论如何都无法正常工作,因此您可以使用以下命令:WHERE PlainText(RichTextField) & "" = ""
关于ms-access - MS Access选择空白/空/空文本记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48629463/