2011-11-04 59 views
2

我有一個由多個字段組成的單個表的數據庫,其中一個是存儲爲NUMERIC的電話號碼。由於電話號碼是10位數字,在我的代碼中,我已將該變量捕獲爲LONG。如何插入NULL長值?

我的問題是,在插入語句中,我如何傳遞NULL值?這可能嗎?我不能爲LONG變量分配一個空值,所以我想知道如何去做這個...

+3

'長'可以'空',但'長'不能。 –

+2

對電話號碼使用數字字段總是讓我覺得奇怪。 –

+0

如果您想要將值插入到容易識別爲空白或不正確的LONG字段中,請使用0.您可以根據需要進行檢查。但是,正如Eng.Fouad所說的,你不能將null分配給一個原始類型('long'),但是你可以將一個對象('Long')分配給一個對象。 – Grambot

回答

2

如果你迫切需要使用NUMERICS的電話號碼,爲什麼不只是編寫一個不存在的電話號碼,像0L或-1L?

編輯:順便說一句,你說數據庫是有限的數字格式。對於java方面也一樣嗎?

long dbPhoneNumber = getTheLongFieldFromTheDatabase(); 
String internalPhoneNumberRepresentation = Long.toString(dbPhoneNumber); 
doSomethingWithString(); 
dbPhoneNumber = internalPhoneNumberRepresentation == null ? 0L : internalPhoneNumberRepresentation; 
storeLongFieldToDatabase(dbPhoneNumber); 

應該或多或少地做你需要的一切,對吧?

7

因爲電話號碼是10位數字,在我的代碼中,我已經捕獲變量爲一個長。

壞主意。電話號碼可能是看起來像數字,但它們不是。他們的字符串恰巧是,大部分是數字。但它們也可以包含符號,如+。使用String代替。


更新:如果您需要使用數字類型,那麼請確保您使用Long,而不是long。 capitilazation是重要的。順便說一句,在標準的Java中沒有LONG這樣的類型。

+3

是的,或者只是從0開始(這就是所有*我住的電話號碼的情況) –

+0

@JB Nizet:+1這也是一個很好的觀點。 –

+0

我不能使用字符串。軟件規格要求數據庫值爲數字。 –

0

首先,爲什麼您將電話號碼存儲爲數字字段?在大多數情況下,您可能還想要存儲諸如「+41(52)123 455」之類的東西,但您可以使用數字數據類型來放置,但是可以。

然後插入空值:請問一下:

INSERT INTO mytable (phone) VALUES (NULL);