【问题标题】:MS Access VBA, SQL Script: In(), <>, AND syntaxesMS Access VBA、SQL 脚本:In()、<>、AND 语法
【发布时间】:2015-12-08 15:54:17
【问题描述】:

我有一个脚本需要显示类型并过滤掉空值。

ReturnBooks = "Select * from [Books] where ([Type] IN ('B','K' ,'R' ,'C') AND [Type] <> 'No' AND [BookGenre] IS NOT NULL)) Order By [LName] ASC"

我需要 BookGenre 不为空,但语法不返回任何内容。最初代码没有那行,它确实返回了一些结果。

ReturnBooks = "Select * from [Books] where ([Type] IN ('B','K' ,'R' ,'C') AND [Type] <> 'No') Order By [LName] ASC"

返回书的类型。

如何在脚本中设置 IS NOT NULL?

例如,books 表会根据流派按姓氏返回作者。我还从脚本中得到数据类型不匹配。

【问题讨论】:

    标签: sql vba select where


    【解决方案1】:

    您的查询中的括号不平衡。

    您需要在数据库中的表格中显示一些示例数据。

    【讨论】:

    • 是的,感谢您注意到这一点。这不仅是为什么,这是我在清理脚本实验后遗漏的一个错字。即使进行了更正,它也不会按原样工作。我很快会再做一次修改。
    • 您需要显示您的表格描述和一些示例数据。现在试试这个: ReturnBooks = "Select * from [Books] where ([Type] IN ('B','K' ,'R' ,'C') AND [Type] 'No' AND [BookGenre]不为空)按 [LName] ASC 排序”
    • 好的。我不想透露私人数据。希望你能理解。
    • 这些都是字符串/文本。
    • 好的。尝试 ReturnBooks = "Select * from [Books] where ([Type] IN ('B','K' ,'R' ,'C') AND [Type] 'No' AND [BookGenre] NULL)按 [LName] ASC 订购
    【解决方案2】:

    让我们检查一下 where 子句: ([Type] IN ('B','K' ,'R' ,'C') AND [Type] 'No') AND [BookGenre] IS NOT NULL) )

    如果你的 [Type] in ('B','K' ,'R' ,'C') 那么它永远不会是 'No',所以,“And Type 'No'”是没有用的.

    "IS NOT NULL" phare 适用于 mysql、sqlserver。

    如果你只需要BookGenre不为空的记录,就用这个:

    ReturnBooks = "SELECT * FROM [Books] WHERE [BookGenre] IS NOT NULL ORDER BY [LName] ASC"
    

    如果您还需要过滤 BookGenre 为空白的记录,请尝试以下操作:

    ReturnBooks = "SELECT * FROM [Books] WHERE ([BookGenre] IS NOT NULL) AND ([BookGenre] <> '')  ORDER BY [LName] ASC"
    

    希望对你有所帮助。

    【讨论】:

    • 这是 MS Access VBA...我应该在我的编辑中添加它。它正在将 SQL 分配给一个变量。
    • 您将如何使用 In 标准来执行此操作,该标准对书籍进行分组,然后不包括“否”字符串,即速记未说明。而且书的类型也不为空。
    • 明确您的需求:您需要满足两个条件的图书列表:1. 类型不等于“否”和 2. BookGenre 不为 NULL。对吗?
    • 我得到了答案,看上面。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多