我有一个数据库组成一个包含多个字段的表,其中一个字段是存储为NUMERIC的电话号码。因为电话号码是10位数,所以在我的代码中我将变量捕获为LONG。
我的问题是,在insert语句中,如何传递NULL值?这有可能吗?我不能为LONG变量赋一个空值,所以我想知道如何去做这个......
答案 0 :(得分:7)
因为电话号码是10位数,所以在我的代码中我将变量捕获为LONG。
糟糕的主意。电话号码可能看起来像一样,但它们不是。它们是字符串,恰好是 数字。但它们也可以包含+
等符号。
改为使用String
。
更新:如果您需要使用数字类型,请确保使用Long
代替long
。资本化非常重要。顺便说一下,标准Java中没有LONG
这样的类型。
答案 1 :(得分:2)
如果您迫切需要使用数字作为电话号码,为什么不将不存在的电话号码编码为0L或-1L?
编辑:顺便说一句,你说数据库仅限于数字格式。 java方面也一样吗?
long dbPhoneNumber = getTheLongFieldFromTheDatabase();
String internalPhoneNumberRepresentation = Long.toString(dbPhoneNumber);
doSomethingWithString();
dbPhoneNumber = internalPhoneNumberRepresentation == null ? 0L : internalPhoneNumberRepresentation;
storeLongFieldToDatabase(dbPhoneNumber);
或多或少应该做你需要的一切,对吗?
答案 2 :(得分:0)
首先,为什么要将电话号码存储为数字字段?在大多数情况下,您可能还想存储诸如“+41(52)123 455”之类的东西,您可以使用数值数据类型来保存它们,但是确定。
然后插入空值:怎么样:
INSERT INTO mytable (phone) VALUES (NULL);