更新sql语法 - 使用串联将字段重置为自身 - SQLServer 2005
-
06-07-2019 - |
题
我使用这种语法得到错误:
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
不隶属于 StackOverflow