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

È stato utile?

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top