Aggiorna sintassi sql - Reimposta un campo su se stesso con una concatenazione - SQLServer 2005
-
06-07-2019 - |
Domanda
Ricevo ed errore usando questa sintassi:
update table set field1 = (field1+' - '+field2) where field1 = 'somevalue'
Non è troppo contento di farlo per me. So che il '+' per la concatenazione funziona nelle mie istruzioni selezionate, quindi questa è la sintassi giusta. C'è qualcos'altro in gioco qui ... e ho provato anche a rimuovere la parentesi.
Esempio:
se field1 = 'Cheese' e field2 = 'ConQueso'
allora il mio aggiornamento dovrebbe impostare tutti i record in cui field1 = 'Cheese' su field1 = 'Cheese - ConQueso'
Modifica
Entrambi i campi sono campi di testo
Soluzione
Difficile dirlo senza che tu fornisca l'errore, ma forse la dimensione dei dati combinati supera il campo1.
Ad esempio, se field1
è varchar (50) e field2
è varchar (50), il totale combinato potrebbe contenere fino a 103 caratteri incluso il tuo '- '
, che supera i 50 caratteri di field1.
Altri suggerimenti
(modifica: precede l'aggiornamento che chiarisce il tipo di dati è text
; ma funziona bene come varchar (max)
)
Funziona bene qui (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]
uscite:
field1 field2
-------------------- --------------------
somevalue - abc abc
other def