2015-10-08 2 views
-1

Я не уверен, почему следующий SQL не работает. Пожалуйста, предложите. Запрос завершился неудачно, когда я попытался установить SET на @ year2.Ошибка запроса запроса T-SQL

declare @year char(2) 
set @year = '14' 
declare @year2 as char(2) 

set @year2 = SELECT CAST(CAST('14' as int) as int) + 1 
select @year2 
+0

литья обычно работает в первый раз, 'CAST (CAST ('14' как INT), как межд)' является излишеством. Есть ли какая-то конкретная причина, по которой вы пытаетесь смешивать строки и целые числа? В конечном итоге это не делает жизнь проще. – HABO

ответ

1

Попробуйте это ...

DECLARE @year CHAR(2) 
SET @year = '14' 

DECLARE @year2 as CHAR(2) 
SET @year2 = CAST(CAST('14' AS INT) AS CHAR(2)) + 1 
SELECT @year2 

Я удалил SELECT и изменил последний AS INT на AS CHAR(2)

+0

он работает. спасибо – nav100

+0

@ nav100, так почему вы не отмечаете, как ответили? –

3

@year2 определяется как CHAR(2) и вы пытаетесь выбрать значение integer внутрь. Вы должны CAST/CONVERT его для того чтобы CHAR(2)

set @year2 = (SELECT (CONVERT(CHAR(2), CAST('14' AS INT) + 1))) 
+0

Также работает. спасибо – nav100

+0

Описание части этого ответа - лучшая вещь, @ nav100 посмотреть, что он написал, и почему вы не смогли бросить :) –

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