【问题标题】:Using parameters in a Where clause在 Where 子句中使用参数
【发布时间】:2017-06-28 14:30:00
【问题描述】:

我还没有找到完全符合我需要的现有线程。我有一个报告工具,允许我向用户询问输入(客户端)并作为参数传递给 SQL。

可能有多个客户端或单词 All。如果参数包含“全部”,我需要选择所有记录。如果参数不包含'All'我只需要选择参数中的记录。

如果参数只有一个值,但我的参数是一个列表并且需要使用“in”谓词,我发现了一些可行的解决方案。 (我认为)

有什么想法吗?

【问题讨论】:

  • 请标记您的 RDBMS - MySql? Sql 服务器?通常情况下,您应该处理代码中列出的参数,例如this。否则,您的替代方案是我很少建议的动态 SQL。
  • 这可能需要您的报告工具的功能。这是什么?
  • Sanit - Intersystems Cache,我有兴趣看到动态 SQL 建议 rd - 我不认为它不为人所知。它被称为 Visual Data Miner,确实有一些功能可以处理这个问题,但我希望在服务器端完成,这就是我希望找到 SQL 解决方案的原因

标签: sql intersystems-cache


【解决方案1】:

在不知道您的数据模型的情况下,应该执行以下操作:

SELECT *
FROM clients
WHERE ID IN (@clients) OR 'All' IN @clients

【讨论】:

  • 像冠军一样工作!
  • @CoSpringsGuy 很高兴我能帮上忙。在这种情况下,您可以/应该将此答案标记为已接受的答案以供将来参考。
【解决方案2】:

当您谈到 Caché 时,这意味着您甚至可以通过多种方式执行查询。还有一些方法可以实现它。我建议对ALL 记录和选择使用不同的查询。您可以使用IN%INLIST 谓词。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 1970-01-01
    • 2015-11-10
    • 2023-04-09
    相关资源
    最近更新 更多