运行此查询时,我没有得到任何输出。我无法理解。任何人都可以帮助我。在这种情况下,$ 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";
}
答案 0 :(得分:5)
您需要使用额外的百分号来转义%e
,否则sprintf
会将其解释为转换说明符(科学计数法中的浮点数)。
sprintf "select sum(f.expenditure) ... like '%%e' ", $lastfiscyear;
有关详细信息,请参阅perldoc sprintf
。
答案 1 :(得分:1)
请注意sprintf
将使用%
符号表示占位符。如果你想将逐字%
放入字符串中,请加倍。我认为问题是%e
接近结尾 - 它被替换为0.000000e+000
。