我使用此模块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转换为字符串,但我不知道该怎么做。
答案 0 :(得分:2)
JavaScript没有大整数,因此大数字必须用浮点数近似。
要将值转换为字符串,请使用CAST expression:
SELECT CAST(info AS TEXT) AS info FROM lorem