You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Excel中通过Power Query传递单元格内SQL查询并返回数据

解决Power Query中SQL语句拼接的语法错误问题

错误原因

你直接在M语言的记录参数中使用Excel单元格引用('Input Parameters'!C3),这不符合Power Query的M语言语法规则——M语言无法直接识别Excel的单元格引用方式,同时字符串拼接的写法也导致语法解析失败,触发了Expression.SyntaxError: Token Literal expected错误。

正确实现步骤

1. 获取Excel单元格的值

通过Excel.CurrentWorkbook()函数加载目标工作表,再提取对应单元格的内容:

// 加载"Input Parameters"工作表内容
InputSheet = Excel.CurrentWorkbook(){[Name="Input Parameters"]}[Content],
// 提取C3单元格的值(Power Query索引从0开始,第3行对应索引2,C列对应Column3)
ClassTagPrefix = InputSheet{2}[Column3],

2. 拼接SQL查询语句

使用M语言的字符串拼接符&组合完整的SQL语句,如果单元格内容可能包含单引号,需要替换为两个单引号避免语法错误:

// 处理单引号转义(可选,防止SQL语法错误)
CleanedPrefix = Text.Replace(ClassTagPrefix, "'", "''"),
// 拼接SQL语句
SqlQuery = "SELECT * FROM Pack.Class WHERE ClassTag='" & CleanedPrefix & "GD'",

3. 执行SQL查询并返回结果

使用数据库连接函数(如Sql.Database)执行拼接好的查询:

// 替换为你的数据库服务器地址和数据库名
Source = Sql.Database("你的服务器地址", "你的数据库名", [Query=SqlQuery]),
Result = Source

完整示例代码

let
    InputSheet = Excel.CurrentWorkbook(){[Name="Input Parameters"]}[Content],
    ClassTagPrefix = InputSheet{2}[Column3],
    CleanedPrefix = Text.Replace(ClassTagPrefix, "'", "''"),
    SqlQuery = "SELECT * FROM Pack.Class WHERE ClassTag='" & CleanedPrefix & "GD'",
    Source = Sql.Database("YourServerName", "YourDatabaseName", [Query=SqlQuery]),
    Result = Source
in
    Result

内容的提问来源于stack exchange,提问作者Nagaraju Kukudala

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 18:05:11