2011-04-19 5 views
1

데이터베이스에 postgresql을 사용하고 있습니다. 그리고 현장의 상태가 null이 아닙니다. 사용자가 해당 필드에 대해 공란을 유지하고 postgresql에서 정수를 허용하기 때문에 null 포인터 예외를 입력하면 ""받아 들일 수 없습니다.이 사례를 처리하는 방법에 대한 모든 아이디어postgresql null 값 처리

+0

'널 포인터 예외'? 이것이 당신이 얻고있는 것과 정확히 일치합니까? – Quassnoi

+0

개발 환경이란 무엇입니까? 언어? 지속성 레이어? – Eelke

+0

문제를 피하는 방법을 묻기 전에 "내 시스템이이 경우에 무엇을 할 것으로 기대합니까?"라고 자문해야합니다. (정수 필드가 입력 양식에서 비어있는 경우). – leonbloy

답변

3

필드에 NULL을 허용하지 않으므로 실제 정수로 설정해야합니다.

빈 문자열을 클라이언트 쪽에서 0 (또는 다른 기본값)으로 바꿉니다.

+0

올바른 방향에 있는지 확인할 수 있습니까? var abc = document.getElementById ('abc'). value; if (abc == "") {abc.value = 0; } – tapps

+1

@ 디부 야 : 그렇습니다. 그러나 이것은'javascript '이며 위조 될 수 있으므로 서버 측 db 레이어에 사용자 입력을 추가적으로 위생해야합니다. – Quassnoi

+0

괜찮습니다. 도움을 많이 주셔서 감사합니다. – tapps

1

javascript로 양식을 확인하십시오. 텍스트 상자의 ""값을 0으로 지정하면됩니다. 그 값을 Integer 값으로 전달하면됩니다.

+0

내가 올바른 방향에 있는지 확인할 수 있습니까? var abc = document.getElementById ('abc'). value; \t if ("". (abc)와 동일) { \t \t abc.value = 0; \t} – tapps

+0

예, 있습니다. 그것은 그런 것입니다. – elvenbyte

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