Как определить, какое поле выдает ошибку типа данных в ЗАПРОСЕ

#sql #sql-server

#sql #sql-сервер

Вопрос:

У меня есть отчет о запросе для пользователя, но отображается некоторое сообщение об ошибке:

Ошибка преобразования типа данных nvarchar в bigint

только одно сообщение.

Как определить, какое поле выдает ошибку типа данных в запросе? Кто-нибудь может дать совет? Большое спасибо!

Комментарии:

1. Это также помогает показать нам запрос и, возможно, некоторые образцы данных.

2. Запрос — это наша компания. Запрос, работающий на сайте UAT, но запускаемый в производство, не работает.

3. По полю, я полагаю, вы имеете в виду столбец? where try_convert(MyColumn,bigint) is null ?

4. @Дейл К. да, да!

5. вы можете попытаться запутать имена столбцов и поделиться запросом, и будет полезно увидеть проблему

Ответ №1:

Поскольку вы не предоставили данные, похоже, что у вас есть тип данных NVARCHAR, который неявно преобразуется в Bigint

ВЫБЕРИТЕ ПРИВЕДЕНИЕ (N’287888′ КАК BIGINT) — Успех
ВЫБЕРИТЕ ПРИВЕДЕНИЕ (N’ABC123′ КАК BIGINT) — Сбой

Посмотрите, в каком столбце ошибка, и, соответственно, исправьте ее.

Вы можете либо загружать только правильные значения:

 SELECT * FROM Table WHERE TRY_CAST(ErrorField AS BIGINT) IS NOT NULL
 

Или вы можете загрузить их как NULL (при условии, что целевой столбец допускает NULL)

 SELECT TRY_CAST(ErrorField AS BIGINT) FROM Table