我有一个名为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);


您可以看到我尝试在包裹之前添加一个空白的'' +来尝试强制执行亲和力,但是如果没有,行为是相同的。即:

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

有什么想法可以让SQLite将此命名为TEXT吗?

最佳答案

我怀疑您已经有一个字符串,只是没有您期望的字符串。由于您拥有的数字不能用8字节整数表示,因此它将转换为实数,然后转换为字符串,即'3.3333333333322223e + 34'。因此,如果您希望该值为“ 33333333333322222222222222222222222223”,那么这就是您必须插入表中的内容。

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

10-07 19:26