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

MSSQL在SSMS和节点JS脚本中返回不同的结果,sql,node.js,sql-server,ssms,Sql,Node.js,Sql Server,Ssms,我有一个SQL查询,使用客户的卡号返回客户的交易标题。SQL查询将返回一个名为audit\u number的列。问题是,当我使用SSMS软件执行SQL查询时,查询返回正确的结果,但是当我在我的节点JS脚本上执行查询时,一些audit\u number是错误的 audit_number应该是141119900000015953和141119900000015952,但是当我在我的节点JS脚本中执行查询时,这两个audit_number都变成141119900000015952 这是我的sql查

我有一个SQL查询,使用客户的
卡号
返回客户的交易标题。SQL查询将返回一个名为
audit\u number
的列。问题是,当我使用SSMS软件执行SQL查询时,查询返回正确的结果,但是当我在我的节点JS脚本上执行查询时,一些
audit\u number
是错误的

audit_number
应该是141119900000015953141119900000015952,但是当我在我的节点JS脚本中执行查询时,这两个
audit_number
都变成141119900000015952

这是我的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
这是我的节点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);        
    });
});

您需要将数据类型
number
更改为
varchar/text
,因为在
javascript
中,如果数字长度超过16位,那么它会给您一些随机数

所以,为了得到准确的结果,您应该将数据类型从数字更改为字符串


数据库中的log_audit是什么数据类型?以及。。。。切勿使用
varchar
,请始终使用大小。。。。类似于
varchar(20)
你可以发布一些javascript代码来复制这个吗?@Nick.McDermaid你可以在chrome开发工具控制台中查看它。放上数字(1111111111111)和数字(11111111111111)哇,这很有趣。所以它溢出了,只是给了你一个错误的数字?JavaScript是如此的神奇,但却充满了如此复杂的东西——所有语言都有优点和缺点:)
For example if you check number
Number(1111111111111111)//16 digits

Result is 1111111111111111

But if you put Number(11111111111111111)//17 digits
then result will be 11111111111111112 something