Обновить синтаксис sql - Восстановить само поле с помощью конкатенации - SQLServer 2005
-
06-07-2019 - |
Вопрос
Я получаю ошибку и, используя этот синтаксис:
update table set field1 = (field1+' - '+field2) where field1 = 'somevalue'
Он не слишком доволен тем, что делает это для меня.Я знаю, что '+' для конкатенации работает в моих операторах select, так что это правильный синтаксис.Здесь замешано что-то еще...и я тоже попробовал убрать скобку.
Пример:
если field1 = 'Сыр' и field2 = 'Завоевание'
затем мое обновление должно установить все записи, где field1 = 'Cheese' на field1 = 'Cheese - ConQueso'
Редактировать:
Оба поля являются текстовыми
Решение
Трудно сказать, не указав ошибку, но, возможно, совокупный размер данных превышает field1.
Например, если field1
является varchar(50) и field2
является varchar(50), общее количество может составлять до 103 символов, включая ваш ' - '
, которое превышает 50 символов поля1.
Другие советы
(редактировать:предшествует обновлению, уточняющему тип данных, является text
;но прекрасно работает как varchar(max)
)
Здесь работает нормально (SQL2005):
create table [table] (
field1 varchar(max) not null,
field2 varchar(max) not null)
insert [table] values ('somevalue','abc')
insert [table] values ('other','def')
update [table] set field1 = (field1+' - '+field2) where field1 = 'somevalue'
select * from [table]
результаты:
field1 field2
-------------------- --------------------
somevalue - abc abc
other def