我使用这种语法得到错误:
update table set field1 = (field1+' - '+field2) where field1 = 'somevalue'
对我来说这样做并不太高兴。我知道连接的'+'在我的select语句中起作用,所以这是正确的语法。这里还有其他的东西......我也尝试删除括号。
示例:
如果field1 ='Cheese'且field2 ='ConQueso',则我的更新应将所有记录设置为field1 ='Cheese'至field1 ='Cheese - ConQueso'
答案 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