Thanks for the suggestions.
DRH's workaround, while it would work, seems very ugly.
I would be interested to know what version of DBD::SQLite Puneet Kishor
is using, since I believe I have tracked the issue to a test in
the sqlite_st_execute() function in dbdimp.c :
else if (looks_like_number(value)) {
/* bind ordinary numbers as numbers - otherwise we might sort wrong */
retval = sqlite3_bind_double(imp_sth->stmt, i+1, SvNV(value));
}
This test appears in all the versions of DBD::SQLite that I can find
and appears to be what causes the text to be treated as a number.
Does this check actually perform any useful function (as per the comment)
or will it be safe to delete it?
Another workaround would be for the "do" of Perl's DBI:
$rv = $dbh->do($statement, \%attr, @bind_values);
to be exteneded in some way to allow bind_types to be passed in.
One could use a prepare, bind_param, execute sequence, but that would
seem to defeat the point of having the do() shortcut in the first place.
-jonathan
--
Jonathan H N Chin, 2 dan | deputy computer | Newton Institute, Cambridge, UK
<[EMAIL PROTECTED]> | systems mangler | tel/fax: +44 1223 767091/330508
"respondeo etsi mutabor" --Rosenstock-Huessy