#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