3

「describe table」クエリを実行していますが、「default」列に「null」の値が返されます。ただし、データベースから HTML テーブルに値を出力しようとすると、「null」が出力されません。それは常に空白です。

これは、データベースからデータを保存する方法です。

@nulls = ();

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

配列の内容を@nulls出力すると、「null」のリテラル値が出力されません。常に空白です。この問題を克服する方法はありますか?

4

4 に答える 4

13

Chris J が言ったように、null 値は未定義の値として返されます。

警告を有効にしていた場合、値を印刷したときに「未定義の値が印刷されています」という警告が表示されます。strictおよびwarningsプラグマタを使用すると、デバッグの時間を大幅に節約できます。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;
于 2009-02-23T05:25:55.303 に答える
7

http://metacpan.org/pod/DBIから、null 値を「undef」として返します。

于 2009-02-23T04:45:34.510 に答える
2

私は Perl を使用していませんが、私が使用した他のすべての言語では、null の値をテストする必要があります。null の場合は、文字列リテラル "null" を出力します。

于 2009-02-23T04:39:24.353 に答える
1

使用しているデータベースは言いませんが、Oracle などの移植性のないソリューションを気にしない場合は、SQL レベルで実行できます。

select NVL(some_column, 'NULL')
from some_table
于 2009-02-23T21:24:17.433 に答える