2011-04-19 148 views
1

我正在使用postgresql進行數據庫操作。並且該字段的條件不爲null。當用戶對該字段保持空白並點擊時,輸入它的空指針異常,因爲在整數postgresql中它不會接受接受「」。關於如何處理這種情況的任何想法postgresql處理空值

+0

'空指針異常'?你確定這正是你所得到的嗎? – Quassnoi 2011-04-19 14:08:23

+0

你的開發環境是什麼?語言?持久層? – Eelke 2011-04-19 14:09:06

+0

在問及如何避免問題之前,您應該問自己「我期望系統在這種情況下做什麼」? (當輸入表單中的整數字段留空時)。 – leonbloy 2011-04-19 14:12:55

回答

3

由於您的字段不接受NULL,因此您應該使用實際整數進行設置。

用客戶端的0(或其他默認值)替換空字符串。

+0

你可以檢查我是否在正確的軌道?var abc = document.getElementById('abc').value; if(abc ==「」){abc.value = 0; } – tapps 2011-04-19 14:27:49

+1

@divya:是的,類似的東西。但由於這是'javascript'並且可能僞造,所以您應該另外清理服務器端數據庫層中的任何用戶輸入。 – Quassnoi 2011-04-19 14:30:07

+0

好的,非常感謝您的幫助 – tapps 2011-04-19 14:31:38

1

用javascript檢查你的表單,如果是從文本框中輸入「」,只需將0賦值給該值即可。然後將該值作爲整數值傳遞,這就是全部。

+0

你可以檢查我是否在正確的軌道?var abc = document.getElementById('abc').value; (「」。equals(abc)){ \t \t abc.value = 0; \t} – tapps 2011-04-19 14:20:18

+0

是的,你是。這是這樣的。 – elvenbyte 2011-04-20 07:12:11

4

如果您可以修改INSERT語句,則可以使用COALESCE()函數自動將NULL值替換爲您指定的另一個值。

下面是在狀態字段中,當$狀態變量沒有設置自動插入0(零)的一個示例:

INSERT INTO foo (name, status) VALUES ($name, COALESCE($status, 0)); 

COALESCE函數可以採取任何數量的參數,並返回所述第一非-NULL值找到。當您在建立默認值之前有想要嘗試的值的「瀑布」時,這會派上用場。例如:

COALESCE($status1, $status2, $status3, $status4, 0) 
+0

'COALESCE'拯救了我的一天。 – jurgemaister 2012-09-17 10:57:29