SQLite3 存储只包含数字的字符串

标签 sql android sqlite

我必须在 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 ),您应该没有任何问题 - 只需在此处尝试即可。如果是 INTEGERREAL , 你应该把它转换成 TEXT - 你不能指望 INTEGERREAL存储 + 的列字符串。

有关所有详细信息,请参阅 Datatypes In SQLite Version 3 .

关于SQLite3 存储只包含数字的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3204110/

相关文章:

php - SQL 中 WHERE AND 之间的 IF ELSE 语句

android - 在 android 中更改方向时应用程序崩溃

PHP/SQLite - 将表从磁盘复制到内存

java - 使困惑。如何获取返回的InputStream?

java - 如何强制编辑文本框通过缩进格式化任何替换文本?

java - 域类中的 ForeignCollection 初始化

sql - SQL 查询中选择的语法

mysql - MySQL 命令行中的 ('>) 符号是什么意思?

mysql - 连接表的SQL语句

MySQL 按连续值和计数分组