Excel:使用单元格值作为 SQL 查询的参数
Posted
技术标签:
【中文标题】Excel:使用单元格值作为 SQL 查询的参数【英文标题】:Excel: Use a cell value as a parameter for a SQL query 【发布时间】:2009-08-16 23:58:34 【问题描述】:我正在使用 MS Excel 通过 ODBC 从 mysql 数据库中获取数据。 我使用 SQL 查询成功获取数据。但现在我希望将该查询参数化。 所以我想知道是否可以使用单元格值(电子表格单元格)作为此类查询的参数。 例如,对于这个查询:
select name from user where id=1
我想从电子表格中的单元格 D4 中获取 id 值。
这是参数化查询的正确方法吗?我该怎么做?
谢谢。
【问题讨论】:
【参考方案1】:我和你有同样的问题,没人能理解我,但我是这样解决的。
SELECT NAME, TELEFONE, DATA
FROM [sheet1$a1:q633]
WHERE NAME IN (SELECT * FROM [sheet2$a1:a2])
您需要在其他工作表中插入一个参数,SQL 会将该信息视为 数据库,然后您可以选择信息并将它们与您喜欢的参数进行比较。
【讨论】:
谢谢,我不知道。我试试看。 您好,很抱歉迟到的问题,我想知道我们还可以使用命名函数/命名范围/命名单元作为参数吗? 这似乎正是我们想要的,但我得到一个错误,说工作表是无效对象。 不起作用,无法连接,“尝试连接时出错”:详细信息:“Microsoft SQL:无效的对象名称'Sheet2$a1:a2'。” 是的,我也是。我收到此“Microsoft SQL:无效的对象名称...”错误。【参考方案2】:如果您使用的是微软查询,您可以添加“?”到您的查询...
从 id= 的用户中选择名称?
当您返回 excel 时,会弹出一个小窗口询问单元格/数据/等。
在弹出窗口中,您还可以选择“始终使用此单元格作为参数”,从而无需在每次刷新数据时定义该单元格。这是最简单的选择。
【讨论】:
这只是给我一个错误。DataSource.Error: Microsoft SQL: Incorrect syntax near '?'. Must declare the scalar variable [...].
【参考方案3】:
queryString = "SELECT name FROM user WHERE id=" & Worksheets("Sheet1").Range("D4").Value
【讨论】:
我想我必须在 VBA 脚本中这样做,对吧?我不认为我可以在 SQL 窗口中键入该表达式。【参考方案4】:SQL 有点像 MS SQL 的语法。
SELECT * FROM [table$] WHERE *;
重要的是表名以 $ 符号结尾并将整个内容放在括号中。作为条件,您可以使用任何值,但到目前为止 Excel 不允许我使用我所谓的“SQL 撇号”(´),因此建议使用一个单词的列标题。
如果您在名为“Users”的表中列出了用户,并且 ID 在标题为“id”的列中,而名称在标题为“Name”的列中,您的查询将如下所示:
SELECT Name FROM [Users$] WHERE id = 1;
希望这会有所帮助。
【讨论】:
以上是关于Excel:使用单元格值作为 SQL 查询的参数的主要内容,如果未能解决你的问题,请参考以下文章
当参数作为整数传递时,Laravel 返回零而不是实际的单元格值