从sqlite3获取BIGINT值

时间:2014-11-08 14:06:43

标签: node.js sqlite

我使用此模块https://www.npmjs.org/package/sqlite3来处理sqlite3。

我需要从数据库中保存/加载大整数,但我不能,因为数字保存后的结果不同。

我的代码:

var sql = require('sqlite3');

var db = new sql.Database(':memory:');

 db.serialize(function() {
    db.run("CREATE TABLE lorem (info BIGINT)");

    var stmt = db.prepare("INSERT INTO lorem VALUES ($value)");
    stmt.bind({
       $value : "1000000000012312312"
    });

    stmt.run(function (err) {
       if (err) {
         console.log(err);
       } else {
         db.all("SELECT info FROM lorem", function (err, r) {
             if (err) {
                console.log(err);
             } else {
                 console.log(r)
             }
         })
       }
    });

结果:

  [ { info: 1000000000012312300 } ]

所以,结果是不同的。我保存了1000000000012312312,我得到了1000000000012312300。

我想我需要将结果编号从sqlite转换为字符串,但我不知道该怎么做。

1 个答案:

答案 0 :(得分:2)

JavaScript没有大整数,因此大数字必须用浮点数近似。

要将值转换为字符串,请使用CAST expression

SELECT CAST(info AS TEXT) AS info FROM lorem