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

Foi útil?

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top