MSSQL在SSMS和Node JS脚本中返回不同的结果

问题描述 投票:0回答:1

我有一个SQL查询,使用客户的card_number返回客户的交易标头。 SQL查询将返回名为audit_number的列。问题是当我使用SSMS软件执行SQL查询时,查询返回正确的结果,但是当我在Node JS脚本上执行查询时,某些audit_number错误。

audit_number

audit_number应该是1411199000001595314111990000015952,但是当我在我的NODE JS脚本中执行查询时,两个audit_number都变成了[[14111990000015952。

audit_number_2

这是我的SQL查询

SELECT h.Log_trxdate AS trx_date, CAST(h.log_audit AS varchar) AS audit_number, h.currency_code FROM log_header h WHERE h.id_code = '10000010055919' --card_number

这是我的Node JS脚本

var querySQL = " SELECT "; querySQL = querySQL + " h.Log_trxdate AS trx_date, "; querySQL = querySQL + " CAST(h.log_audit AS varchar) AS audit_number, "; querySQL = querySQL + " FROM log_header h "; querySQL = querySQL + " WHERE h.id_code = 10000010055919 "; sql.connect(config, function (err) { var req = new sql.Request(); req.query(querySQL, function (err, result) { console.log(result); }); });

sql node.js sql-server ssms
1个回答
0
投票
您需要将数据类型从number更改为varchar/text,因为在javascript中,如果数字长度超过16位,那么它将为您提供一些随机数。

因此,要获得准确的结果,应将数据类型从数字更改为字符串。

For example if you check number Number(1111111111111111) Result is 1111111111111111 But if you put Number(11111111111111111) then result will be 11111111111111112 something

© www.soinside.com 2019 - 2024. All rights reserved.