DBI绑定参数和方括号

时间:2016-11-11 20:26:54

标签: perl ms-access dbi brackets square

我遇到以下代码问题:

$sql = <<"END_SQL";
SELECT DISTINCT Matching.[CI M], Matching2_1.[LAC M], Matching2_1.[CI M], Matching.[Band M], Matching2_1.[Band M], Matching.Site, Matching2_1.Site, Matching.[BSC/RNC], Matching.[CellName M],  Matching.[BSC/RNC M], Matching2_1.[CellName M]
FROM Matching, [N 900 - 900], Matching AS Matching2_1
WHERE Matching.[Band M]= ? AND Matching2_1.[Band M]= ? ;
END_SQL

$sth = $dbh->prepare($sql);
$sth->execute(900, 900);

列名包含空格,数据库是MS访问,因此我使用方括号在查询中使用它们

问题在于Perl将方括号解释为绑定参数,并且需要11个参数。

这是错误:

  

DBD :: ODBC :: st执行失败:[Microsoft] [ODBC Microsoft Access Driver]参数太少。预期11.(SQL-07002)在NEIGHBORS MAPPING.pl第89行。

1 个答案:

答案 0 :(得分:0)

Access数据库引擎也可以将反引用识别为表/字段分隔符,因此如果quare括号给您带来麻烦,请尝试

SELECT DISTINCT Matching.`CI M`, ...