Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 sql_variant + concat  [new]
kosyakla
Member

Откуда:
Сообщений: 148
Пересел с Оракла на SQL Server 2008...Столкнулся в неприятной проблемой.

Есть таблица в ней поле TheValue с типом данных sql_variant - нужно взять и обновить это поле, добавить к нему вначале например 999

Делаю так:

update table set TheValue = CONVERT(sql_variant,999) + TheValue

выдает Msg 8117, Level 16, State 1, Line 5
Operand data type sql_variant is invalid for add operator.
23 май 11, 03:57    [10691980]     Ответить | Цитировать Сообщить модератору
 Re: sql_variant + concat  [new]
kosyakla
Member

Откуда:
Сообщений: 148
Ещё одна замечание. В итоге в поле TheValue не должны числа сложиться, а просто добавилось к TheValue 999
23 май 11, 04:03    [10691982]     Ответить | Цитировать Сообщить модератору
 Re: sql_variant + concat  [new]
iljy
Member

Откуда:
Сообщений: 8711
kosyakla
Ещё одна замечание. В итоге в поле TheValue не должны числа сложиться, а просто добавилось к TheValue 999
"Просто добавилось" - как строка чтоли? Ну так и приводите к строке.
23 май 11, 09:04    [10692232]     Ответить | Цитировать Сообщить модератору
 Re: sql_variant + concat  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
kosyakla,

SQL_VARIANT в выражении обязательно должен явно приводиться к нужному типу
с помощью CAST или CONVERT
23 май 11, 09:43    [10692366]     Ответить | Цитировать Сообщить модератору
 Re: sql_variant + concat  [new]
flexgen
Member

Откуда: Город на песке
Сообщений: 851
kosyakla
Пересел с Оракла на SQL Server 2008...Столкнулся в неприятной проблемой.

Есть таблица в ней поле TheValue с типом данных sql_variant - нужно взять и обновить это поле, добавить к нему вначале например 999

Делаю так:

update table set TheValue = CONVERT(sql_variant,999) + TheValue

выдает Msg 8117, Level 16, State 1, Line 5
Operand data type sql_variant is invalid for add operator.


Попробуй что-то вроде этого
declare @NewValue sql_variant

set @NewValue = 999

update table <имя таблицы>  set TheValue =  TheValue + convert(int, @NewValue)
23 май 11, 18:14    [10696305]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить