我正在运行的查询“描述表”,它为“默认”的列返回“空”的值。然而,当我尝试从数据库中的值打印到HTML表是不打印“空”。这只是始终空白。

这是怎么了存储从数据库中的数据:

@nulls = ();

while (($null) = $sth1->fetchrow_array)
    {
    push (@nulls, $null);
    }

当我打印数组的内容@nulls它从未打印“空”的文本值。它始终是空白。有没有办法解决这个问题?

有帮助吗?

解决方案

正如克里斯Ĵ所说,空值返回为未定义的值。

如果您启用了警告,你会“在打印不定值”,当你打印的值收到警告。使用strictwarnings 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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top