Perl DBI,如何从ENUM数据类型的mysql表中获取字段?

Perl DBI,如何从ENUM数据类型的mysql表中获取字段?,perl,Perl,我知道如何使用以下命令获取所有字段: SELECT * FROM 'table_name'; 但不确定如何仅获取在创建表时分配了枚举数据类型的字段 我找到了答案: 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_i

我知道如何使用以下命令获取所有字段:

SELECT * FROM 'table_name';  
但不确定如何仅获取在创建表时分配了
枚举
数据类型
的字段

我找到了答案:

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;
my$dbh=DBI->connect(“DBI:mysql:$db:$host”、“$db_user”、“$db_pwd”)或die(打印“无法连接到数据库$DBI::errstr
”; my$sth=$dbh->column_info(未定义,未定义,'table_name','%')或die$dbh->errstr(); 而(my$row=$sth->fetchrow\u hashref()){ if($row->{TYPE_NAME}eq'ENUM'){ push(@list,$row->{COLUMN_NAME}); } } $sth->finish(); $dbh->断开连接;
您可以使用检查表。不过,我不建议您每次从表中提取数据时都运行该查询

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;

将你的答案作为答案张贴,而不是问题的一部分,并将其标记为已接受