SQLite'+';如果是整数(列类型字符串),则删除前缀
我有个奇怪的问题。我在SQLite数据库中将一列定义为SQLite'+';如果是整数(列类型字符串),则删除前缀,sql,sqlite,Sql,Sqlite,我有个奇怪的问题。我在SQLite数据库中将一列定义为STRING,但当我将它与前缀为+的整数一起使用时,它会自动将它们转换为正确的整数: sqlite> create table test (key STRING); sqlite> insert into test values ('+1'); sqlite> insert into test values ("+2"); sqlite> select * from test; 1 2 如您所见,+符号已删除。另一
STRING
,但当我将它与前缀为+
的整数一起使用时,它会自动将它们转换为正确的整数:
sqlite> create table test (key STRING);
sqlite> insert into test values ('+1');
sqlite> insert into test values ("+2");
sqlite> select * from test;
1
2
如您所见,+
符号已删除。另一方面,如果我引用字符串两次:
sqlite> delete from test;
sqlite> insert into test values ('"+3"');
sqlite> insert into test values ("'+4'");
"+3"
'+4'
。。。它按预期工作,但它们被引用。我的主要问题是我需要“双引号”所有字符串,因为我不能保证某些字符串在数据库中看起来像一个整数,因此会被篡改
这是我想知道的:
- 为什么SQLite会有这样的行为(可能还有其他实现)
- 我能做点什么吗?(没有双重引用?)
仅供参考,插入字符串
“+test”
的效果与预期一致:
sqlite> delete from test;
sqlite> insert into test values ('+t');
sqlite> select * from test;
+t
(回答时不加引号-whii!)这与SQLite的相关。特别是,
STRING
不是有效的类型,因此SQLite将其默认为NUMERIC
affinity。事实上,引用这一页:
请注意,声明的“浮点”类型将给出整数
亲和性,而不是真正的亲和性,因为“点”末尾的“INT”。
并且声明的“STRING”类型具有NUMERIC的亲缘关系,而不是
文本
您希望将列声明为文本
,而不是字符串
。那会解决的