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

时间:2010-01-23 06:11:24

标签: postgresql

我正在处理我的数据库库中的bug,它在内部使用了LibPQ。我看到以下对我来说很奇怪的行为:

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

中为空,则返回true

但对于VARCHAR,SMALLINT ..如果在DB中它们是空的,则返回false。

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

1 个答案:

答案 0 :(得分:0)

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

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

将此查询中的空字符串('')替换为零以检查数字字段。