我在Informix表中有記錄。該表列如下所示:如何在Perl的DBI中正確表示空格
acct_no integer,
suffix char(1),
meter_num char(20),
date_read datetime year to second not null ,
counter smallint,
reading integer not null ,
typeofread char(1),
estimated char(1),
time_billed datetime year to second
使用Informix的DBACCESS工具:
select *
from ws_mtrread
where acct_no = 113091000
and suffix = " "
order by date_read desc;
這個結果(最新的顯示)返回和我的作品無論是否使用一個或兩個空格的後綴。
acct_no 113091000
suffix
meter_num 34153205
date_read 2013-09-09 23:31:15
counter 0
reading 1240
typeofread g
estimated
time_billed 2013-10-22 11:48:21
然而,這Perl的DBI查詢
my $sql_statement =
"select * ".
"from ws_mtrread ".
"where acct_no = ? ".
"and suffix = ? ".
"order by date_read desc ; ";
不起作用。我可以在不指定$ suffix的情況下獲取行,所以我知道該行存在。
我相信這是我代表後綴的錯誤。在這個例子中,後綴等於一個由兩個空格組成的字符串。
如何正確表示空格,以便查詢有效?以下是我用於獲取該行的其餘代碼。
my $test_acct_no = 113091000;
my $suffix = " ";
my $pt_sel_hdl = $DBHdl->prepare($sql_statement);
$pt_sel_hdl->execute($test_acct_no, $DBHdl->quote($suffix));
my $ws_mtr_read_rec_ref = $pt_sel_hdl->fetchrow_hashref;
調用之後,$ ws_mtr_read_rec_ref未定義。
我會嘗試,但這是一個問題。 Informix接受分號來終止一個字符串。爲什麼會這樣呢? – octopusgrabbus
@Barmar這是Informix,而不是MySQL。 – octopusgrabbus
我不知道如何表示errstr()。如果我按照你列出的方式使用它,它會變得不確定。 – octopusgrabbus