UPDATE [table_name] SET [field_name] = REPLACE ( [field_name], "foo", "bar");
Meetai.com
6
Saya pikir lebih cepat tidak menggunakan WHERE instr(field, 'foo') > 0;(jadi tidak akan melakukan 2 pencarian) ... Apakah saya salah?
inemanja
2
@treddell, tidak ada posisi mulai dari 1 di string SQL.
Alexis Wilke
2
@inemanja, @Air tanpa WHEREklausa yang Anda lakukan UPDATEpada semua baris ...
Alexis Wilke
7
Seperti Pring, jika Anda akan meninggalkan komentar seperti itu, Anda mungkin ingin menjelaskan alasannya. Apakah itu kesalahan dalam saran awal, atau kesalahan di pihak Anda? Dan Anda tahu bahwa sebelum Anda melakukan perubahan besar pada database Anda harus mendukungnya terlebih dahulu?
pdwalker
86
UPDATE table_name
SET field = replace(field,'string-to-find','string-that-will-replace-it');
Bekerja untuk saya karena saya perlu menambahkan klausa lain di mana. UPDATE table_name SET field = REPLACE (bidang, 'foo', 'bar') MANA bidang SEPERTI '% foo%' DAN otherfield = 'foo22'
Bekerja untukku. Itu tergantung pada bagaimana Anda menafsirkan pertanyaan itu. Jika Anda membutuhkan entri basis data untuk diubah, maka gunakan update. Kalau tidak, solusi ini jauh lebih baik karena dapat digunakan tanpa memperbarui bidang.
Gruber
0
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");WHERE instr(field, 'foo') > 0;
(jadi tidak akan melakukan 2 pencarian) ... Apakah saya salah?WHERE
klausa yang Anda lakukanUPDATE
pada semua baris ...sumber
Seperti misalnya, jika saya ingin mengganti semua kemunculan John dengan Mark, saya akan menggunakan di bawah ini,
sumber
Dan jika Anda ingin mencari dan mengganti berdasarkan nilai bidang lain Anda bisa melakukan CONCAT:
Hanya untuk memiliki yang ini di sini sehingga orang lain akan menemukannya sekaligus.
sumber
Dalam pengalaman saya, metode tercepat adalah
The
INSTR()
cara adalah tercepat kedua dan menghilangkanWHERE
klausul sama sekali adalah yang paling lambat, bahkan jika kolom tidak diindeks.sumber
Fungsi Ganti string akan melakukan itu.
sumber
update
. Kalau tidak, solusi ini jauh lebih baik karena dapat digunakan tanpa memperbarui bidang.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.
sumber