我必须在 SQLite3 中运行一个非常简单的查询。
INSERT OR REPLACE INTO tblPhoneList(Phone, PeopleId, StorageType) VALUES('+91912345789', '1','1');
但无论我做什么,数字都存储为 91912345789。忽略 + 前缀。
Phone
字段是一个 String
。为什么它会忽略 + 前缀?
有什么办法可以避免这种情况吗?
附言此代码在 Android 中运行
编辑: 这是表的架构
CREATE TABLE tblPhoneList(Phone STRING PRIMARY KEY ON CONFLICT REPLACE, StorageT
ype INTEGER, PeopleId INTEGER, FOREIGN KEY(PeopleId) references tblPeople(id));
最佳答案
<更新> 来自 the manual :
the declared type of "STRING" has an affinity of NUMERIC, not TEXT
所以请将此列的类型更改为TEXT
,你应该完成了。 更新结束>
你的 Phone
是什么类型列(尝试 PRAGMA table_info (tblPhoneList)
)?如果是TEXT
(或 BLOB
),您应该没有任何问题 - 只需在此处尝试即可。如果是 INTEGER
或 REAL
, 你应该把它转换成 TEXT
- 你不能指望 INTEGER
或 REAL
存储 +
的列字符串。
有关所有详细信息,请参阅 Datatypes In SQLite Version 3 .
关于SQLite3 存储只包含数字的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3204110/