Ошибка преобразования при преобразовании значения varchar в регистр
Я не могу обойтись без этого. У нас есть следующий простой запрос.
DECLARE @bFlag bit
SET @bFlag = 0
SELECT something = CASE
WHEN @bFlag = 1 THEN
CASE
WHEN RS.intInterval = 1 THEN '"Days"'
WHEN RS.intInterval = 2 THEN '"Weeks"'
WHEN RS.intInterval = 3 THEN '"Months"'
WHEN RS.intInterval = 4 THEN '"Years"'
END
Else
RS.intInterval
End
from MyTable AS RS WITH (NOLOCK)
Итак, я хочу получитьintInterval
(которыйint
) еслиflag
не установлен вtrue
, В противном случае, еслиflag
установлен вtrue
, Я хочу получитьDays
, Weeks
и т. д. в зависимости от значенияintInterval
, Если я запускаю это с@bFalg = 1
Я получаю эту ошибку:
Ошибка преобразования при преобразовании значения varchar '"Weeks" в тип данных int
что не имеет никакого смысла, так как я ничего не конвертирую.
Я знаю, что могу это исправить, поставивcast (intInterval as varchar)
вelse
часть. Однако я хочу знать причину, почему я получаю эту ошибку, почемуcase
пытается преобразовать «Недели» вint
?