PQgetisnull:在DB中,即使值为空,也不会返回true
问题描述:
我正在我的数据库库中使用内部使用LibPQ的bug。我看到以下对我来说很奇怪的行为:PQgetisnull:在DB中,即使值为空,也不会返回true
对于postgreSql数据类型DATE
如果在DB 中为空,则返回true对于postgreSql数据类型TIME
,如果为postgreSql数据类型TIME
,则返回true它在DB
但是对于VARCHAR,SMALLINT ..返回false,即使它们在DB中是空的。
PS。我还没有检查其他数据类型
答
空字符串和零(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核对数字字段。
“空”是什么意思? DATE或TIME字段只能保存有效的日期或时间,或者可以是NULL(由其定义允许)。那么他们是否为空? – 2010-01-23 13:36:55
我分析深处的代码,我发现,我的数据库库,除了数据和时间更新NULL,如果他们是空的..但在其他值的情况下..它使用char []凝视更新值..如果值为空它可能是插入null终止字符串...而不是空... 感谢您的评论 – Satbir 2010-01-23 16:00:26