ram*_*ram 10 sqlite string integer
我得到以下数字作为字符串:String numberString ="079674839";
当我将此数字插入SQLite DB时,SQLite会自动删除前导零并将字符串存储为79674839.考虑到亲和性并且该列存储TEXT,SQLite是否应该存储整个字符串并保持前导零?
谢谢
仔细检查数据库架构.正如SQLite版本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])
Run Code Online (Sandbox Code Playgroud)
输出是:
i r t b
796 796.0 u'0796' u'0796'
Run Code Online (Sandbox Code Playgroud)
所以,看起来你的列实际上是一个整数类型.查看模式定义(sqlite3 database.db .schema从命令行开始工作),再次查看文档,并确保使用映射到TEXT亲和性的类型名称之一.未知类型名称获得INTEGER亲和力.
在我自己的情况下,我使用'STR',最终得到默认的INTEGER亲和力.我将其更改为"TEXT",SQLite开始尊重我的前导零.
| 归档时间: |
|
| 查看次数: |
4646 次 |
| 最近记录: |