【问题标题】:Excel MS Query - How to write parameter equals "" or show all in SQL queryExcel MS Query - 如何编写参数等于“”或在 SQL 查询中显示全部
【发布时间】:2013-09-23 07:34:30
【问题描述】:

刚刚在 MS-Query 中编写完一个 SQL 脚本,我很难让它工作。

我所追求的是这个 SQL where 子句的等价物:

AND ((examplefield = @Para) or (@Para = ''))

因此,如果参数 = 字段中的某些内容,则仅显示该字段,或者如果参数 = 空白则显示所有结果。

到目前为止,如果我想选择一个特定的项目,这就是我所拥有的,现在我只需要包括额外的如果空白显示全部。

AND (`'Project Master List$'`.`Type of Work`= ?) 

不幸的是,这不起作用。

AND ((`'Project Master List$'`.`Type of Work`= ?) OR (? = ""))

有什么建议吗?

【问题讨论】:

  • 您是否在寻找它是(您的值与(空白与空)或(您的值)与(空白或空)或(您的值)与(仅空白,非空)跨度>
  • 您好 Elias,我有一个下拉列表,其中有一个产品列表,例如,在顶部我包含了一个空白条目,用户可以选择它来显示所有产品。查看上面的代码,如果用户选择了一个产品,那么它将返回与它匹配的所有结果,如果他们选择空白,那么它将显示所有产品,因为该部分语句满足空白 = 空白。跨度>

标签: sql sql-server excel excel-2010 ms-query


【解决方案1】:

试一试?

Case When ?="" THEN
  'docode'

  WHEN ?="OtherValue" THEN
  'DoCode'
  Else
  'DoCode '
  End

IIF 示例:

iif(?="", 
iif(?="OtherValue",ReturnSomethingTrue,ReturnSomethingFalse)
,ReturnSomethingTrue,ReturnsomethingFalse)

【讨论】:

  • 嗨,Elias,很遗憾,MS Query SQL 脚本由于某种原因不喜欢 CASE 语句。
  • 我忘了。您是否尝试过 IIF 语句?你可以嵌套它们。我将在上面提供一个示例。
  • 我回顾了问题中的底部 where 子句,并意识到我将其包裹在错误的引号中。感谢 Elias 的回复。
  • 哈,我讨厌这样的事情发生。祝你项目的其余部分好运!
【解决方案2】:

我回顾了最初的问题,意识到我将 where 子句用错误的引号括起来了。见下文

错误的说法

AND ((`'Project Master List$'`.`Type of Work`= ?) OR (? = ""))

正确的说法

AND (`'Project Master List$'`.`Type of Work`= ? OR ? = '')

一旦我在子句末尾进行了更改,它就起作用了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多