【问题标题】:Passing a list of numbers from excel to query in firebird SQL将数字列表从excel传递到firebird SQL中的查询
【发布时间】:2018-05-12 10:44:41
【问题描述】:

我有一个 firebird 数据库和一个来自 excel 的查询。一开始我有

WHERE (table.myID IN (1,2,3))

用于将 SQL 中的参数传递给 firebird。我的 table.myID 是整数。然后我尝试使用

从 excel 传递参数
WHERE (table.myID IN (?))

我将? 指向一个单元格。如果在单元格中只有一个数字有效。但是,如果我从一个单元格中?=1, 2, 3,则查询不起作用。我试图引用上下文,格式化单元格但没有成功。

thisthisthis 等其他帖子在带有 文本列表 的示例中使用 INSTR 和 VBA 解决此难题。我是 firebird 新手,不知道类似的 INSTR 命令或传递此整数列表的其他方法。

那么我怎样才能从一个单元格中传递一个整数列表呢?

【问题讨论】:

  • 问题出在数字上。对我来说,从单元格到 excel 到底传递了什么?
  • @LuizCarlosStevanatto 您应该构建 excel 并传递字符串,该字符串由由约定的分隔符分隔并包裹的数字组成,您的 SQL 查询将在 LIKE 子句中使用该字符串
  • LIKE 子句是基本的 ANSI SQL。当标准 SQL 提供相同的功能时,使用非标准的 Visual Basic 功能是很奇怪的。 @lad2025 为您提供了它的 MS SQL 示例 - 尽管坦率地说,这并不重要,因为它是每个 SQL 服务器都应该实现的通用标准 SQL。 Firebird 示例是 Route#2,stackoverflow.com/a/43997801/976391
  • 请不要在问题标题中添加“[已解决]”之类的内容,而是接受解决您问题的答案(对于自答问题,您可以接受之前有超时)

标签: sql excel firebird


【解决方案1】:

正如cmets中提到的Arioch 'The,查询是

(?) 包含 '~' ||表.myID || '~'

在单元格中是

'~1~2~3~'

【讨论】:

  • 有些东西还不明白。当我将一个列表与 {111,112,113,114} 一起使用时,出现了一些意想不到的情况。如果我在 SQL 工具中将 (?) 替换为 ~111~112~113~114~ ,它就可以工作。但是,如果我在 excel 的一个单元格中使用 ~111~112~113~114~,则查询只是前三个 ~111~112~113~ 并排除 ~114~。为什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-26
  • 1970-01-01
  • 2018-08-01
  • 1970-01-01
相关资源
最近更新 更多