无法使用带有Node.js的npm mssql将浮点值存储到sql服务器

我试图做简单的更新查询和存储百分比值,这将是在我的sql服务器数据库中的types为float的百分比列中。

当我这样做:

var percentage = 3.1415; const updateAttendence = await sql.query `UPDATE Attendence SET percentage = ${ percentage } WHERE session_id = ${ parseInt( req.body.session ) } AND student_id = ${ parseInt( req.body.AttendanceData[i].id ) } `; 

我在我的数据库中得到这个

在这里输入图像说明

当我这样做 – 取代percentage = ${ percentage } percentage = 3.1415

 const updateAttendence = await sql.query `UPDATE Attendence SET percentage = 3.1415 WHERE session_id = 1 AND student_id = 1 ` 

我得到我想要的 percentage = ${ percentage }

在这里输入图像说明

我不明白它为什么不按照它所想的那样工作。 这只是我或任何其他人有这个问题,有什么解决这样一个简单的事情成为一个问题(至less对我来说)。

-谢谢

这似乎是node-mssql中的一个错误,假定数值是Ints。 您可以使用.input方法将值指定为其他值,但是不能使用带标签的模板文字。

 const updateAttendence = await pool.request() .input('percentage', sql.Float, percentage) .input('session_id', sql.Int, req.body.session) .input('student_id', sql.Int, req.body.AttendanceData[i].id) .query(`UPDATE Attendence SET percentage = @percentage WHERE session_id = @session_id AND student_id = @student_id`);