PQgetisnull:在DB中,即使值为空,也不会返回true

问题描述:

我正在我的数据库库中使用内部使用LibPQ的bug。我看到以下对我来说很奇怪的行为:PQgetisnull:在DB中,即使值为空,也不会返回true

对于postgreSql数据类型DATE如果在DB 中为空,则返回true对于postgreSql数据类型TIME,如果为postgreSql数据类型TIME,则返回true它在DB

中是空的

但是对于VARCHAR,SMALLINT ..返回false,即使它们在DB中是空的。

PS。我还没有检查其他数据类型

+0

“空”是什么意思? DATE或TIME字段只能保存有效的日期或时间,或者可以是NULL(由其定义允许)。那么他们是否为空? – 2010-01-23 13:36:55

+0

我分析深处的代码,我发现,我的数据库库,除了数据和时间更新NULL,如果他们是空的..但在其他值的情况下..它使用char []凝视更新值..如果值为空它可能是插入null终止字符串...而不是空... 感谢您的评论 – Satbir 2010-01-23 16:00:26

空字符串和零(0)与NULL不同。运行此查询的一种形式,看看有多少NULL值VS空字符串为您现场存在:

SELECT COALESCE(<field_name>,'NULL'), COUNT(*) 
FROM <table_name> 
WHERE <field_name> = '' 
    OR <field_name> IS NULL 
GROUP BY 1 

在此查询替换为空字符串(“”)有0-3核对数字字段。