Обновление синтаксиса sql. Сброс поля для себя с помощью конкатенации - SQLServer 2005 - PullRequest
1 голос
/ 19 июня 2009

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

update table set field1 = (field1+' - '+field2) where field1 = 'somevalue'

Я не очень счастлива делать это для меня. Я знаю, что «+» для конкатенации работает в моих операторах выбора, так что это правильный синтаксис. Здесь есть что-то еще ... и я тоже попытался убрать скобки.

Пример:

если field1 = 'Cheese' и field2 = 'ConQueso'
, тогда мое обновление должно установить все записи, где field1 = 'Cheese' равным field1 = 'Cheese - ConQueso'


EDIT:
Оба поля являются текстовыми полями

Ответы [ 2 ]

2 голосов
/ 19 июня 2009

(правка: предшествует обновлению, уточняющий тип данных 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
2 голосов
/ 19 июня 2009

Трудно сказать, если вы не указали ошибку, но, возможно, объединенный размер данных превышает поле 1.

Например, если field1 - это varchar (50), а field2 - varchar (50), общая сумма может составлять до 103 символов, включая ваш ' - ', что превышает 50 символов поля 1.

...