2016-05-13 4 views
1

Запрос:Конверсия удалось при преобразовании значения VARCHAR к Int ошибки типа данных в VisualStudio

SELECT CAST(College_Year AS VARCHAR(10)), 
     Learner_Id, 
     Forename_1, 
     Surname, 
     sum(Possible_Duration) AS Possible_Duration, 
     sum(Present_Duration) AS Present_Duration, 
     CASE 
      WHEN sum(Present_Duration) = 0 THEN 0 
      ELSE sum(Present_Duration)/sum(Possible_Duration) 
     END AS Attendance 
FROM dbo.IM_AT_Attendance_vw 
WHERE Session_date >= 
    (SELECT ACYR_Start_Date 
    FROM dbo.ACYR 
    WHERE dbo.IM_fnCurrentACYR() = ACYR_College_year) 
    AND Session_Date <= 
    (SELECT ACYR_End_Date 
    FROM dbo.ACYR 
    WHERE dbo.IM_fnCurrentACYR() = ACYR_College_year) 
    AND Session_Date NOT IN 
    (SELECT Holiday_Date 
    FROM IM_EFC_Holidays) 
    AND Possible = 1 
    AND month(Session_Date) = month(DATEADD(mm, -1, GETDATE())) 
    AND Learner_ID = @Learner_ID 
GROUP BY College_Year, 
     Learner_Id, 
     Forename_1, 
     Surname 
ORDER BY Surname, 
     Attendance 

выше запрос отлично работает в SSMS, но когда я выполняю от визуальной студии выдает ошибку:

Conversion failed when converting varchar value '414084H' to datatype int.

I я угадываю проблему с колонкой LearnerID - тип данных varchar (12)

Я пробовал CAST (Learner_ID AS INT) и CONVERT (INT, Learner_ID), но не помогает ....

Любая помощь очень ценится.

Спасибо,

Ar

+1

Пожалуйста, добавьте больше контекста вашего вопроса – blackbishop

+0

@blackbishop - см. выше –

ответ

1

Ваше значение LearnerID "414084H" содержит письмо в конце. Поэтому он не может быть преобразован в целое.

Если формат alyways то же самое вы можете выбрать только первые 6 символов из вашего значения в избранных, и таким образом, преобразование будет успешным:

select SUBSTRING(LearnerID, 0, 6) 
+0

Я пробовал это, но все же запрос дает такую ​​же ошибку ... –

+1

Вы можете попробовать передать строку int непосредственно в хранимую процедуру. Итак: SELECT CAST (SUBSTRING (LearnerID, 0, 7) AS INTEGER). Я просто заметил, что вы должны отправить как параметр 7, а не 6, чтобы принять все цифры. – Patricia

+0

Ошибка: преобразование не удалось при преобразовании значения varchar '4B0446' в тип данных int. –

 Смежные вопросы

  • Нет связанных вопросов^_^