从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