我知道如何使用以下命令获取所有字段:
SELECT * FROM 'table_name';
但不确定如何在创建表时仅提取已分配ENUM
datatype
的字段。
我找到了答案:
my $dbh=DBI->connect("DBI:mysql:$db:$host", "$db_user", "$db_pwd") or die (print "Can't connect to database $DBI::errstr<br>");
my $sth = $dbh->column_info(undef,undef,'table_name','%') or die $dbh->errstr();
while(my $row = $sth->fetchrow_hashref()){
if ($row->{TYPE_NAME} eq 'ENUM') {
push(@list, $row->{COLUMN_NAME});
}
}
$sth->finish();
$dbh->disconnect;
答案 0 :(得分:0)
您可以使用SHOW COLUMNS
检查表格。我不建议每次要从表中提取数据时都运行该查询。
my @enums = ();
my $sth = $dbh->prepare(q{DESC } . $tablename);
$sth->execute or die $dbh->errstr;
while (my $hashref = $sth->fetchrow_hashref) {
push @enums, $hashref->{Field} if $hashref->{Type} =~ /^enum/;
}
$sth->finish; undef $sth;