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

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

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

示例:

如果field1 ='Cheese'且field2 ='ConQueso'
那么我的更新应该将field1 ='Cheese'的所有记录设置为field1 ='Cheese - ConQueso'


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

有帮助吗?

解决方案

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

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

其他提示

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