具有亲和力TEXT的SQLite列仍将长号存储为INTEGER

时间:2018-01-25 14:08:49

标签: sqlite

我有一个名为deliverysimp的表,我试图插入一些数据。我知道列的数据类型只是亲和力而不是限制,但我需要将parcelid列保存为TEXT

CREATE TABLE IF NOT EXISTS deliverysimp (parcelid TEXT, expected integer, primary key (parcelid))

我使用以下javascript将数据插入数据库:

context.executeSql("INSERT INTO deliverysimp(parcelid, expected) values(?,?)",
    [
    '' + delivery.parcelid,
    delivery.expected
    ], function () { }, me.ErrorHandler);

你可以看到我试图在parcelid之前添加一个空白'' +来尝试强制亲和力,但行为是相同的没有;即:

如果我尝试存储parcelid 33333333333322222222222222222222223,它会以3.3333333333322223e+34的形式存储到数据库中,我需要将其作为文本/字符串表示。

我有什么想法让SQLite以TEXT来表达这一点?

1 个答案:

答案 0 :(得分:2)

我怀疑你已经有了一个字符串,而不是你期望的字符串。由于您拥有的数字不能用8字节整数表示,它会被转换为实数,而 会被转换为字符串,即' 3.3333333333322223e + 34' 。因此,如果您希望该值为' 33333333333322222222222222222222223',那么您必须将其插入到表格中。

要检查,请使用SELECT parcelid, TYPEOF(parcelid) FROM deliverysimp;命令行工具执行sqlite3并查看您获得的内容。