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

SQLite3存储仅包含数字的字符串,sql,android,sqlite,Sql,Android,Sqlite,我必须在SQLite3中运行这样一个非常简单的查询 INSERT OR REPLACE INTO tblPhoneList(Phone, PeopleId, StorageType) VALUES('+91912345789', '1','1'); 但无论我做什么,号码都存储为91912345789。忽略+前缀。 电话字段是一个字符串。为什么它会忽略+前缀? 有没有办法避免这种情况 另外,这段代码是在安卓系统中运行的 编辑: 这是表的模式 CREATE TABLE tblPhoneList(P

我必须在SQLite3中运行这样一个非常简单的查询

INSERT OR REPLACE INTO tblPhoneList(Phone, PeopleId, StorageType) VALUES('+91912345789', '1','1');
但无论我做什么,号码都存储为91912345789。忽略+前缀。 电话
字段
是一个
字符串
。为什么它会忽略+前缀? 有没有办法避免这种情况

另外,这段代码是在安卓系统中运行的

编辑: 这是表的模式

CREATE TABLE tblPhoneList(Phone STRING PRIMARY KEY ON CONFLICT REPLACE, StorageT
ype INTEGER, PeopleId INTEGER, FOREIGN KEY(PeopleId) references tblPeople(id));

数据库中的现场电话不能是字符串,您最好检查一下,TEXT或VARCHAR可以工作。祝你好运

数据库中的现场电话不能是字符串,您最好检查一下,TEXT或VARCHAR可能有效。祝你好运

是文本!SQLite只支持整数、文本、实数和BLOB。

它是文本!SQLite仅支持整数、文本、实数和BLOB。

来自:

声明的“STRING”类型具有数值关联,而不是文本关联

因此,请将此列的类型更改为
TEXT
,您应该完成此操作

您的
电话
列的类型是什么(请尝试
PRAGMA table\u info(tblPhoneList)
)?。如果它是
TEXT
(或
BLOB
),您不应该有任何问题,只要在这里尝试一下即可。如果它是
整数
实数
,则应将其转换为
文本
——不能指望
整数
实数
列存储
+
字符串

有关所有详细信息,请参阅。

来源:

声明的“STRING”类型具有数值关联,而不是文本关联

因此,请将此列的类型更改为
TEXT
,您应该完成此操作

您的
电话
列的类型是什么(请尝试
PRAGMA table\u info(tblPhoneList)
)?。如果它是
TEXT
(或
BLOB
),您不应该有任何问题,只要在这里尝试一下即可。如果它是
整数
实数
,则应将其转换为
文本
——不能指望
整数
实数
列存储
+
字符串

有关所有详细信息,请参见。

尝试以下操作:

INSERT OR REPLACE INTO tblPhoneList(Phone, PeopleId, StorageType) VALUES('\+91912345789', '1','1');
试试这个:

INSERT OR REPLACE INTO tblPhoneList(Phone, PeopleId, StorageType) VALUES('\+91912345789', '1','1');

谢谢你的回复。
我将类型
String
(是的,支持字符串类型)更改为
Varchar(32)
,这个错误神奇地消失了。这里似乎不太支持
String
类型。

感谢您的回复。
我将类型
String
(是的,支持字符串类型)更改为
Varchar(32)
,这个错误神奇地消失了。看起来这里对
String
type的支持很差。

SQLite对类型的疏漏是出了名的。听起来他们好像在把字符串“duck-typing”成一个数字,然后再返回。SQLite对类型的定义是出了名的宽松。听起来他们好像是在把字符串“duck-typing”成一个数字,然后再返回。这是字符串,我已经发布了模式。Lol:)SQLite将把几乎任何一个术语,例如字符串,全局化为最接近的匹配项(文本、整数、实数、blob)。请参阅本文的“affinity”部分:它是String,我已经发布了Schema.Lol:)SQLite将把几乎任何术语(如String)全局化为最接近的匹配项(text、integer、real、blob)。请参阅本文的“关联”部分:我检查了类型。这是一根绳子。我已经在这里发布了架构。我检查了类型。这是一根绳子。我已经在这里发布了模式。我试过了。它只是按原样存储“\+91912345789”。用斜杠,好的。您必须澄清一件事,即您正在传递字符串作为查询?如果是,请尝试以下操作:“在tblPhoneList(电话、PeopleId、存储类型)值(“+”\+“+”91912345789)、“1”、“1”)中插入或替换;我尝试了。它只是按原样存储“\+91912345789”。用斜杠,好的。您必须澄清一件事,即您正在传递字符串作为查询?如果是的话,试着这样做:“插入或替换为TBLPHONELIST(电话、PeopleId、SturgType)值(‘+’+ +”+“91912345789”、“1”、“1”);“你可以考虑接受你带来的答案(除了你自己)。你可以考虑接受把你带到那里的答案(而不是你自己的答案)。