Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 在perl中将整数转换为字符串以插入DB_Database_String_Perl_Casting_Integer - Fatal编程技术网

Database 在perl中将整数转换为字符串以插入DB

Database 在perl中将整数转换为字符串以插入DB,database,string,perl,casting,integer,Database,String,Perl,Casting,Integer,我有一个perl脚本,它从文本文件中读取行并插入到db中 示例文本文件可以如下所示 其中第一行是列名,行表示列值。它以EAV格式存储,列名称和列值均为VARCHAR 现在,对于zipcode00032,perl脚本将其视为整数,插入查询将变为整数 INSERT VALUES('India',00032)//由于perl将其视为字符串,所以引号没有出现 因此,在插入时,它是插入India 32(将其视为整数) 因此,我可以强制将其设置为字符串,以便perl模块将值('India','00032')

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

示例文本文件可以如下所示 其中第一行是列名,行表示列值。它以EAV格式存储,列名称和列值均为VARCHAR

现在,对于zipcode00032,perl脚本将其视为整数,插入查询将变为整数 INSERT VALUES('India',00032)//由于perl将其视为字符串,所以引号没有出现 因此,在插入时,它是插入India 32(将其视为整数)


因此,我可以强制将其设置为字符串,以便perl模块将值('India','00032')改为-

如果将其视为数字,perl将只将其设置为数字

$x = "00032";
say $x;
$x += 0;
say $x;
输出:

00032
32

您没有显示设置邮政编码字符串的代码,但是,如果使用
$postcode=“00032”
而不是
$postcode=00032,则前导零将被保留。如果值来自文件、用户输入等,则代码中将外部数据移动到程序中的某些内容会导致它们丢失,但我们无法在不查看相关代码的情况下说出丢失的确切原因。

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

那么,为什么不将引号添加到SQL查询中呢?显示您正在使用的代码的相关部分!你试过在“00032”附近加引号吗?我也希望如此。我做了一个“'”、“$value”。”;但它正在执行“00032”。我做错什么了吗?为什么不这样做:
$str=“VALUES('$country','$code')”。但是,如果您显示代码,您可能会希望对SQL查询使用
prepare
。欢迎使用堆栈溢出。这已经是一个很好的答案,但您仍然可以对其进行改进,使其更有帮助。添加一个示例,链接到相关文档并解释问题所在。这样,其他人会更好地理解你的意思,你的答案将来可以用作参考,你可能会得到更多的投票(如果你关心“分数”,也就是说)。前导零会被保留,因为我没有做任何算术运算,但问题是我有一个插入查询“插入到位置”(columnName,columnValue)值(?),因此,当执行此操作时,它正在oracle db中插入位置(columnName,columnValue)值('zipCode',0032)。如果您这样插入(0032中没有引号),并且columnValue是VARCHAR,则oracle会在内部将其视为数字并插入zipCode,32
00032
32