我得到了以下字符串: String numberString = "079674839";
当我将这个数字插入到SQLite数据库中时,SQLite会自动删除前导零,并将该字符串存储为79674839。考虑到亲和性和该列存储为TEXT,SQLite应该存储整个字符串并保留前导零吗?
谢谢
请仔细检查您的数据库模式。根据SQLite Version 3中的数据类型文档,列类型名称会影响存储值之前的处理方式。
以下是一个使用内存数据库演示的Python程序:
import sqlite3
db = sqlite3.connect(':memory:')
val = "0796";
db.execute('CREATE TABLE test (i INTEGER, r REAL, t TEXT, b BLOB);')
db.execute('INSERT INTO test VALUES (?, ?, ?, ?);', (val, val, val, val))
res = db.execute('SELECT * FROM test');
print '\t'.join([x[0] for x in res.description])
for row in res.fetchall():
print '\t'.join([repr(x) for x in row])
i r t b
796 796.0 u'0796' u'0796'
sqlite3 database.db .schema
可以在命令行中使用),再次查看文档,确保你正在使用映射到TEXT亲和性的类型名称之一。未知类型名称会获得INTEGER亲和性。如果数字在内联 SQL 代码中的任何位置,请使用单引号(即 '079674839')括起来。此外,如果您正在以编程方式执行此操作,请确保不进行数字转换。
CREATE TABLE tableName (Col1 ScoobyDoobyDoo);
中,它将默认为整数,但直到您开始查询类似于“00789”的内容并且结果为789时,您才会有任何想法... - Steel Nation