2

我有一个 perl 脚本,它从文本文件中读取行并插入到数据库中。

示例文本文件可能如下所示

country   zipcode
------------------
India      712501
India      00032

其中第一行是列名,行表示列值。它以 EAV 格式存储,列名和列值都为 VARCHAR。

现在对于邮政编码 00032,perl 脚本将其视为 Integer 并且插入查询正在变为 INSERT VALUES('India',00032) //Quote 没有出现,因为 perl 将其视为字符串 SO,而插入它正在插入 India 32(处理它为整数)

那么我可以强制将其设为字符串,以便 perl 模块将 VALUES('India','00032') 改为?

4

2 回答 2

2

在“准备”之前将数据放入查询中可能会导致许多问题。使用占位符。这种方式 perl 知道每个字段中预期的数据类型,并且几乎总是会做正确的事情......

于 2012-11-05T18:57:30.507 回答
1

如果你把它当作一个数字,Perl 只会把它变成一个数字。

$x = "00032";
say $x;
$x += 0;
say $x;

输出:

00032
32

您没有显示设置邮政编码字符串的代码,但是,如果您使用$postcode = "00032";而不是$postcode = 00032;,则将保留前导零。如果值来自文件、用户输入等,那么将外部数据移动到程序中的代码中的某些内容会导致它们丢失,但我们不能在没有看到相关信息的情况下说出究竟是什么丢失了它代码。

于 2012-11-05T13:33:54.527 回答