哪一个代表null? undef或空字符串

时间:2012-10-03 12:37:58

标签: perl oracle dbi

我想在表格的一列中插入null

哪一个代表null? undef或空字符串''

应该使用哪一个?为什么?我知道defined并且我可以查看它。

但我从数据库的角度来看更多。

哪一个更恰当地代表null

更新:我正在使用DBI模块。

3 个答案:

答案 0 :(得分:11)

DBI使用undef来表示SQL NULL。空字符串表示空字符串。

但是,某些数据库不区分NULL和空字符串。 Oracle is a particular offender here. DBI无法做任何事情。

答案 1 :(得分:7)

假设Perl DBI,undef表示SQL NULL

Perl中的空字符串表示SQL中的完全相同(即空字符串)。

答案 2 :(得分:4)

假设您正在使用DBI模块,并且正在使用绑定参数(因为如果您手动构建SQL,则在字符串中使用NULL):

  

未定义的值或undef用于表示NULL值。

请参阅the perldoc for DBI

如果您没有直接使用DBI(例如,您正在使用DBIx :: Class或其他一些ORM),那么您可能会发现它继承了DBI的行为。