2010-01-23 159 views
0

我正在我的數據庫庫中使用內部使用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

空字符串和零(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覈對數字字段。

相關問題