2009-03-25 2 views
98

Ho bisogno di una dichiarazione di aggiornamento SQL per l'aggiornamento di un particolare campo di tutte le righe con una stringa "test" da aggiungere nella parte anteriore del valore esistente.Come anteporre una stringa a un valore di colonna in MySQL?

Ad esempio, se il valore esistente è "try", dovrebbe diventare "testtry".

risposta

213

È possibile utilizzare la funzione CONCAT per farlo:

UPDATE tbl SET col=CONCAT('test',col); 

Se si desidera ottenere colonne aggiornamento più intelligenti e solo, che non hanno già prova di anteporre , provare

UPDATE tbl SET col=CONCAT('test',col) 
WHERE col NOT LIKE 'test%'; 
5

Questo è un semplice

UPDATE YourTable SET YourColumn = CONCAT('prependedString', YourColumn); 
+0

Correggere fino alla clausola WHERE, dove si concatena solo il test alle colonne che iniziano già con il test. Quindi: foo -> foo footest -> footest testfoo -> testtestfoo –

+0

Grazie, immagino che ho ricevuto la domanda sbagliata :) – soulmerge

15
UPDATE tablename SET fieldname = CONCAT("test", fieldname) [WHERE ...] 
+0

aggiornamento BIGLIETTO set status_details = concat (_details di stato, 'abc') dove ticket_id = 75108; ERRORE 1583 (42000): parametri errati nella chiamata alla funzione nativa "CONCAT" –

5

molte funzioni di aggiornamento delle stringhe in myqsl sembrano funzionare così: se un argomento è nullo, quindi anche la concatenazione o altre funzioni restituiscono null. Così, per aggiornare un campo con valore nullo, prima impostato su un valore non nullo, come ad esempio ''

Per esempio:

update table set field='' where field is null; 
update table set field=concat(field,' append'); 
0
  • UPDATE nome_tabella SET Colonna1 = CONCAT ('newtring ', table_name.Column1) dove 1
  • UPDATE nome_tabella SET Colonna1 = CONCAT ('newtring', table_name.Column2) dove 1
  • UPDATE nome_tabella SET Colonna1 = CONCAT ('newtring', table_name.Column2, 'newtring2') dove 1

Possiamo concatenare la stessa colonna o anche l'altra colonna della tabella.