【发布时间】:2013-04-15 10:27:15
【问题描述】:
我在从文件中读取的数组中有一组元素。现在我想在in Claus! 的 sql 语句中使用这个数组值,因为我需要用 '(单引号) 将这些字符串括起来.所以我试过用for循环来做到这一点!有没有办法做同样的opp?像 qw 之类的任何构建功能...
代码:
open FILE, "<tab_name.txt" or die $!;
my @tab=<FILE>;
chomp(@tab);
@tab=split(",",$tab[0]);#set of like eg:$tab[0]=asc,cdf,sad,casd,aea,aee,asdf
my @sql_str=();
foreach my $item(@tab){
$item="'".$item."'";
push(@sql_str,$item);#add comma
push(@sql_str,",");
}
pop(@sql_str);#remove lase unwanted comma
我得到了想要的输出,比如'asc','cdf','sad','casd','aea','aee','asdf'
但是有什么办法吗?
【问题讨论】:
-
您不应该在 SQL 查询的值中使用引号。请改用占位符。
-
您似乎正在尝试使用 IN 子句创建动态查询。如果值的数量是固定的,则创建一个模板。如果变量的数量不是 ocnstant,您将不得不使用准备语句并创建和执行动态 sql 语句。什么数据库?
-
@jim:oracle db 实际上,我正在尝试使用 sql plus 通过 perl 访问这个数据库
-
因此,您最终会得到一个完整的 sql 语句字符串,例如“select * from table where fld1 in ('foo', 'bar', 'junk');” ?
-
另见 Andy Lester 的优秀资源,Bobby-Tables.com。