Atualização sintaxe SQL - Repor um campo para si com uma concatenação - SQLServer 2005
-
06-07-2019 - |
Pergunta
Eu estou recebendo e erro usando a seguinte sintaxe:
update table set field1 = (field1+' - '+field2) where field1 = 'somevalue'
Não é muito feliz em fazer isso para mim. Eu sei que o '+' para obras de concatenação em minhas instruções select, de modo que é a sintaxe correta. Há algo mais em jogo aqui ... e eu tentei remover o parêntese também.
Exemplo:
Se campo1 = 'queijo' e field2 = 'ConQueso'
então a minha atualização deve definir todos os registros onde campo1 = 'queijo' para campo1 = 'Cheese - ConQueso'
EDIT:
Ambos os campos são campos de texto
Solução
É difícil dizer sem você fornecendo o erro, mas talvez o tamanho dos dados combinados excede field1.
por exemplo., Se field1
é VARCHAR (50) e é field2
VARCHAR (50), o total combinado poderia ser de até 103 caracteres, incluindo o seu ' - '
, que excede os 50 caracteres de campo1.
Outras dicas
(edit: pré-datas a atualização esclarecendo-tipo de dados é text
, mas funciona bem como varchar(max)
)
funciona bem aqui (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]
saídas:
field1 field2
-------------------- --------------------
somevalue - abc abc
other def