MSSQL возвращает другой результат в сценарии SSMS и Node JS - PullRequest
1 голос
/ 08 октября 2019

У меня есть SQL-запрос для возврата заголовка транзакции клиента, используя card_number клиента. Запрос SQL вернет столбец с именем audit_number. Проблема заключается в том, что когда я выполняю запрос SQL с помощью программного обеспечения SSMS, запрос возвращает правильные результаты, но когда я выполняю запрос по моему сценарию JS Node, некоторые из audit_number неверны.

audit_number

audit_number должно быть 14111990000015953 и 14111990000015952 , но когда я выполняю запрос в моем JS-сценарии NODE, оба 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 Script

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);        
    });
});

1 Ответ

2 голосов
/ 08 октября 2019

Вам необходимо изменить тип данных number на varchar/text, поскольку в javascript, если длина номера превышает 16 цифр, это даст вам случайное число.

Так чтоЧтобы получить точный результат, вы должны изменить тип данных с номера на строку.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...