我得到以下字符串形式的数字:String numberString = "079674839";
当我将这个数字插入 SQLite 数据库时,SQLite 会自动删除前导零并将字符串存储为 79674839。考虑到亲和性以及该列存储文本,SQLite 不应该存储整个字符串并保留前导零吗?
谢谢
最佳答案
仔细检查您的数据库架构。如记录在 Datatypes in 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
从命令行运行),查看 documentation再次,并确保您使用的是映射到 TEXT 亲和性的类型名称之一。未知类型名称获得 INTEGER 亲和性。
在我自己的例子中,我使用的是“STR”,它以默认的 INTEGER 亲和性结束。我将其更改为“TEXT”,SQLite 开始遵守我的前导零。
关于string - 将数字作为字符串插入到文本列中,SQLite 仍然删除前导零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3926417/