perl中DBI模块中的SQL错误

时间:2011-04-07 19:58:04

标签: sql perl module dbi


  运行此查询时,我没有得到任何输出。我无法理解。任何人都可以帮助我。在这种情况下,$ lastfiscyear = 09/10。

getitem44();  
sub getitem44()  
{  
$sqlquery = sprintf("select sum(f.expenditure)          
                     from funds f,ledger l      
                     where l.ledger_id in (select ledger_id from ledger  
                                           where upper(ledger_name) like 'MONOACQ%' and  
                                           substr(ledger_name,length(ledger_name)-4, 5) = '%s') and  
                                  f.ledger_id = l.ledger_id and  
                                  substr(f.funds_name, 1, instr(f.funds_name,',')-1) like '%e' ", $lastfiscyear);    
$sth = $dbh->prepare($sqlquery);  
$rc = $sth->execute;  
my $total = $sth->fetchrow_array;  
print "$total\n";  
}

2 个答案:

答案 0 :(得分:5)

您需要使用额外的百分号来转义%e,否则sprintf会将其解释为转换说明符(科学计数法中的浮点数)。

sprintf "select sum(f.expenditure) ... like '%%e' ", $lastfiscyear;

有关详细信息,请参阅perldoc sprintf

答案 1 :(得分:1)

请注意sprintf将使用%符号表示占位符。如果你想将逐字%放入字符串中,请加倍。我认为问题是%e接近结尾 - 它被替换为0.000000e+000