题
我正在运行的查询“描述表”,它为“默认”的列返回“空”的值。然而,当我尝试从数据库中的值打印到HTML表是不打印“空”。这只是始终空白。
这是怎么了存储从数据库中的数据:
@nulls = ();
while (($null) = $sth1->fetchrow_array)
{
push (@nulls, $null);
}
当我打印数组的内容@nulls
它从未打印“空”的文本值。它始终是空白。有没有办法解决这个问题?
解决方案
正如克里斯Ĵ所说,空值返回为未定义的值。
如果您启用了警告,你会“在打印不定值”,当你打印的值收到警告。使用strict
和warnings
pragmata可以节省大量的时间调试。所述diagnostics
编译指示增加了额外的说明文字为标准警告和致命错误。
这是很容易以捕获并作为它们来自数据库替换NULL值:
use strict;
use warnings;
my @nulls = ();
while ((my $null) = $sth1->fetchrow_array)
{
# before perl 5.10: use the ternary operator.
push @nulls, defined $null ? $null : 'NULL';
# perl 5.10 adds the defined-or operator: //
push @nulls, $null // 'NULL';
}
或者你可以建立自己的@nulls
阵列您在上面表现出同样的方式,然后改变在显示时间的零点。
my @pre_5_10 = map { defined $_ ? $_ : 'NULL' } @nulls;
my @perl_5_10 = map { $_ // 'NULL' } @nulls;
其他提示
从 http://metacpan.org/pod/DBI 时,它会返回空值作为'是undef'。
我不这样做的Perl,但我用所有其他语言,你要测试空值。如果它是零,打印出字符串“空”。
你不说你正在使用的数据库,但你可以在SQL级别做,如果你不介意的非便携式解决方案,例如,在Oracle:
select NVL(some_column, 'NULL')
from some_table
不隶属于 StackOverflow