Jawaban:
Ubah table_name
dan field
untuk mencocokkan nama tabel dan bidang Anda dalam pertanyaan:
UPDATE table_name SET field = REPLACE(field, 'foo', 'bar') WHERE INSTR(field, 'foo') > 0;
WHERE instr(field, 'foo') > 0;
(jadi tidak akan melakukan 2 pencarian) ... Apakah saya salah?
WHERE
klausa yang Anda lakukan UPDATE
pada semua baris ...
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);
Seperti misalnya, jika saya ingin mengganti semua kemunculan John dengan Mark, saya akan menggunakan di bawah ini,
UPDATE student SET student_name = replace(student_name, 'John', 'Mark');
Dan jika Anda ingin mencari dan mengganti berdasarkan nilai bidang lain Anda bisa melakukan CONCAT:
update table_name set `field_name` = replace(`field_name`,'YOUR_OLD_STRING',CONCAT('NEW_STRING',`OTHER_FIELD_VALUE`,'AFTER_IF_NEEDED'));
Hanya untuk memiliki yang ini di sini sehingga orang lain akan menemukannya sekaligus.
Dalam pengalaman saya, metode tercepat adalah
UPDATE table_name SET field = REPLACE(field, 'foo', 'bar') WHERE field LIKE '%foo%';
The INSTR()
cara adalah tercepat kedua dan menghilangkan WHERE
klausul sama sekali adalah yang paling lambat, bahkan jika kolom tidak diindeks.
Saya menggunakan baris perintah di atas sebagai berikut: perbarui TABLE-NAME set FIELD = replace (FIELD, 'And', 'and'); tujuannya adalah untuk mengganti Dan dengan dan ("A" harus huruf kecil). Masalahnya adalah ia tidak dapat menemukan "Dan" dalam database, tetapi jika saya menggunakan seperti "% Dan%" maka ia dapat menemukannya bersama dengan banyak ands lainnya yang merupakan bagian dari kata atau bahkan yang sudah huruf kecil.
[field_name]
, "foo", "bar");