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



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

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

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

任何想法如何让SQLite将其视为TEXT

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

要进行检查,请使用sqlite3命令行工具执行SELECT parcelid, TYPEOF(parcelid) FROM deliverysimp;,看看您得到了什么。

最新更新