Actualizar sintaxis sql: restablecer un campo a sí mismo con una concatenación - SQLServer 2005
-
06-07-2019 - |
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
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