in reply to undef-safe equality

One other option not mentioned, but some databases allow you to modify the returned NULL value to some standard string value, like "(null)". Of course, you have to choose a value that will never, ever be used in your data.

Postgres, for example uses the 'pset' command to modify printed values. You should be able to pass pset values in the options parameter of DBI->connect. Note that the following is not tested, but I think should work based in DBI and Postgres documentation. If you cannot modify the printed NULL value through DBI, you may be able to modify it in the database startup configuration.

my $options = "--pset null='(null)'"; my $dbh = DBI->connect("dbi:Pg:dbname=test;" . "options=$options", "user", "password");