我正在运行一个查询“描述表”,它为“默认”列返回“空”值。但是,当我尝试将值从数据库打印到 HTML 表时,它不会打印“null”。它总是空白。
这就是我从数据库中存储数据的方式:
@nulls = ();
while (($null) = $sth1->fetchrow_array)
{
push (@nulls, $null);
}
当我打印数组的内容时,@nulls
它从不打印'null'的字面值。它始终是空白的。有没有办法克服这个问题?
正如 Chris J 所说,空值作为未定义值返回。
如果您启用了警告,您将在打印值时收到“未定义的打印值”警告。使用strict
和warnings
pragmata 可以节省大量的调试时间。diagnostics
pragma 为标准警告和致命错误添加了额外的解释性文本。
捕获和替换来自数据库的 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,它将返回 null 值作为 'undef'。
我不使用 Perl,但在我使用过的所有其他语言中,您必须测试 null 的值。如果为空,则打印出字符串文字“null”。
您没有说您使用的是什么数据库,但如果您不介意非便携式解决方案(例如在 Oracle 中),则可以在 SQL 级别执行此操作:
select NVL(some_column, 'NULL')
from some_table