どのように私はPerlで未定義の値のリテラル「ヌル」を印刷することができますか?

StackOverflow https://stackoverflow.com/questions/576536

  •  05-09-2019
  •  | 
  •  

質問

私は「テーブルを記述する」クエリを実行していますし、それが「デフォルト」列の「NULL」の値を返します。私はHTMLのテーブルにデータベースから値を印刷しようとすると、しかし、それは「ヌル」を印刷していません。それはちょうど、常に空白です。

これは、私は、データベースからのデータを格納しています方法です。

@nulls = ();

while (($null) = $sth1->fetchrow_array)
    {
    push (@nulls, $null);
    }
私は印刷すると

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

役に立ちましたか?

解決

クリスJは、前記

のように、ヌル値が未定義の値として返されます。

あなたは警告が有効になっていた場合は、値を印刷したとき、あなたは「印刷に未定義の値が」警告を受けているだろう。 strictwarningsプラグマを使用すると、時間のデバッグを大幅に節約することができます。 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 のことから、それはのようにNULL値を返します。 'undefを' ます。

私はPerlを行いませんが、私が使用した他のすべての言語で、あなたはNULL値をテストする必要があります。それがnullの場合、文字列リテラル「ヌル」を印刷します。

オラクルでは、例えば、あなたが使っているものをデータベース言いませんが、あなたは非ポータブルソリューションを気にしない場合は、SQLレベルでそれを行うことができます:

select NVL(some_column, 'NULL')
from some_table
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top