Risposte:
Modifica table_name
e field
abbina il nome della tabella e il campo in questione:
UPDATE table_name SET field = REPLACE(field, 'foo', 'bar') WHERE INSTR(field, 'foo') > 0;
WHERE instr(field, 'foo') > 0;
(quindi non eseguirà 2 ricerche) ... Sbaglio?
WHERE
clausola che fai UPDATE
su tutte le righe ...
UPDATE table_name
SET field = replace(field, 'string-to-find', 'string-that-will-replace-it');
UPDATE table SET field = replace(field, text_needs_to_be_replaced, text_required);
Come ad esempio, se voglio sostituire tutte le occorrenze di John con Mark che userò di seguito,
UPDATE student SET student_name = replace(student_name, 'John', 'Mark');
E se si desidera cercare e sostituire in base al valore di un altro campo, è possibile eseguire un CONCAT:
update table_name set `field_name` = replace(`field_name`,'YOUR_OLD_STRING',CONCAT('NEW_STRING',`OTHER_FIELD_VALUE`,'AFTER_IF_NEEDED'));
Solo per avere questo qui in modo che gli altri lo trovino subito.
Nella mia esperienza, il metodo più veloce è
UPDATE table_name SET field = REPLACE(field, 'foo', 'bar') WHERE field LIKE '%foo%';
La INSTR()
strada è la seconda più veloce e omettere del WHERE
tutto la clausola è più lenta, anche se la colonna non è indicizzata.
La funzione Sostituisci stringa lo farà.
update
. Altrimenti questa soluzione è molto migliore in quanto può essere utilizzata senza aggiornare i campi.
Ho usato la riga di comando sopra come segue: aggiorna TABLE-NAME set FIELD = sostituisci (FIELD, 'And', 'and'); lo scopo era sostituire And con e ("A" dovrebbe essere minuscolo). Il problema è che non riesco a trovare "And" nel database, ma se uso come "% And%", allora può trovarlo insieme a molti altri ands che fanno parte di una parola o anche quelli che sono già in minuscolo.
[field_name]
, "foo", "bar");