我正在尝试确定测试空白/空/空文本记录的最佳方法。
我所说的文本记录是:

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

  • 我已经使用下表(名为Table1)尝试了各种查询条件:
    ms-access - MS Access选择空白/空/空文本记录-LMLPHP
    在这里,Spaces记录包含任意数量的空格,Empty String记录包含空字符串(""),而Null记录就是这样。

    我实现目标的第一个想法是使用查询,例如:
    SELECT * FROM Table1 WHERE TextField IS NULL OR Trim(TextField)=""
    
    这确实返回了三个目标记录:SpacesEmpty StringNull
    但是有些奇怪,使用:
    SELECT * FROM Table1 WHERE TextField = ""
    
    同时返回Empty String记录 Spaces记录:
    ms-access - MS Access选择空白/空/空文本记录-LMLPHP
    这使我认为我的查询可以省略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>&nbsp;</div>(您可以使用RichTextField & ""看到它)。

    对于富文本字段,索引无论如何都无法正常工作,因此您可以使用以下命令:
    WHERE PlainText(RichTextField) & "" = ""

    关于ms-access - MS Access选择空白/空/空文本记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48629463/

    10-11 00:29
    查看更多