string - 将数字作为字符串插入到文本列中,SQLite 仍然删除前导零

标签 string sqlite integer

我得到以下字符串形式的数字: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/

相关文章:

python - 属性错误 : 'str' object has no attribute 'items'

c - 遍历字符串与打印特定位置时的不同结果 (C)

c# - C#不同的逗号分隔值不起作用

SQLite3 性能与 BETWEEN 范围的 OR

haskell - 在 Haskell 中何时选择 'Natural' 而不是 'Integer'?

java - 如何将元音/辅音放入单独的数组中并输出元音和辅音?

SQLite 和 UWP,使用 Winsqlite3

python-3.x - 如何将枚举(或列表)传递给SQLite?

android - 无法从 double 转换为 float

C++ 语法问题 : if var ! = type int