从sqllite3获取BIGINT值

我使用这个模块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转换为string,但我不知道该怎么做。

JavaScript没有大整数,所以大数字必须用浮点数来近似。

要将值转换为string,请使用CASTexpression式 :

 SELECT CAST(info AS TEXT) AS info FROM lorem