更新sql语法 - 使用串联将字段重置为自身 - SQLServer 2005

时间:2009-06-19 14:50:16

标签: sql sql-server-2005 syntax-error sql-update string-concatenation

我使用这种语法得到错误:

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

对我来说这样做并不太高兴。我知道连接的'+'在我的select语句中起作用,所以这是正确的语法。这里还有其他的东西......我也尝试删除括号。

示例:

如果field1 ='Cheese'且field2 ='ConQueso',则我的更新应将所有记录设置为field1 ='Cheese'至field1 ='Cheese - ConQueso'


修改
两个字段都是文本字段

2 个答案:

答案 0 :(得分:2)

如果没有提供错误,很难说,但是组合数据大小可能超过了field1。

例如,如果field1是varchar(50)而field2是varchar(50),则总计最多可包含103个字符,包括' - ',超过50个字符of field1。

答案 1 :(得分:2)

(编辑:更新澄清数据类型为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