Обновить синтаксис sql - Восстановить само поле с помощью конкатенации - SQLServer 2005

StackOverflow https://stackoverflow.com/questions/1018395

Вопрос

Я получаю ошибку и, используя этот синтаксис:

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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top