Pregunta

Recibo un error al usar esta sintaxis:

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

No está muy contento de hacer esto por mí. Sé que el '+' para la concatenación funciona en mis declaraciones select, por lo que esa es la sintaxis correcta. Aquí hay algo más en juego ... e intenté eliminar el paréntesis también.

Ejemplo:

if field1 = 'Cheese' y field2 = 'ConQueso'
entonces mi actualización debería establecer todos los registros donde field1 = 'Cheese' a field1 = 'Cheese - ConQueso'


EDITAR:
Ambos campos son campos de texto

¿Fue útil?

Solución

Es difícil de distinguir sin que usted proporcione el error, pero quizás el tamaño de datos combinado exceda el campo1.

Por ejemplo, si field1 es varchar (50) y field2 es varchar (50), el total combinado podría tener hasta 103 caracteres, incluido su '- ', que excede los 50 caracteres del campo1.

Otros consejos

(editar: es anterior al tipo de datos que aclara la actualización es text ; pero funciona bien como varchar (max) )

Funciona bien aquí (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]

salidas:

field1               field2
-------------------- --------------------
somevalue - abc      abc
other                def
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top