Saya memiliki kolom yang berisi url (id, url):
http://www.example.com/articles/updates/43
http://www.example.com/articles/updates/866
http://www.example.com/articles/updates/323
http://www.example.com/articles/updates/seo-url
http://www.example.com/articles/updates/4?something=test
Saya ingin mengubah kata "pembaruan" menjadi "berita". Apakah mungkin melakukan ini dengan skrip?
Jawaban:
Sekarang baris itu seperti
http://www.example.com/articles/updates/43
akan
http://www.example.com/articles/news/43
http://www.electrictoolbox.com/mysql-find-replace-text/
sumber
WHERE LIKE
klausa di bagian akhir, karena jika teks yang ditemukan tidak ada, baris tidak akan diperbarui, tetapi harus mempercepatnya . "LIKE '%%'
tidak menggunakan indeks, jika ada bagian lain di WHERE, misalnya sesuatu sepertidate_added > '2014-07-01'
itu mungkin membantuYa, MySQL memiliki fungsi REPLACE ():
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_replace
Perhatikan bahwa lebih mudah jika Anda membuat alias saat menggunakan
SELECT
sumber
updates
hanya muncul sekali dalam string, maka ini akan berhasil. Kalau tidak, Anda terjebak dengan manipulasi string langsung yang merupakan rasa sakit nyata di MySQL. Pada titik itu akan lebih mudah untuk menulis skrip satu kali untuk memilih kolom, memanipulasi klien, lalu menulis kembali.Fungsi ganti harus bekerja untuk Anda.
Mengembalikan string str dengan semua kemunculan string from_str digantikan oleh string to_str.
REPLACE()
melakukan pencocokan case-sensitive saat mencari from_str.sumber
Anda cukup menggunakan fungsi replace (),
Catatan: Permintaan di atas jika untuk memperbarui catatan langsung dalam tabel, jika Anda ingin pilih permintaan dan data tidak boleh terpengaruh dalam tabel maka dapat menggunakan permintaan berikut-
sumber
Selain jawaban gmaggio jika Anda perlu secara dinamis
REPLACE
danUPDATE
menurut kolom lain yang dapat Anda lakukan misalnya:Dalam contoh saya, string
articles/news/
disimpan diother_table t2
dan tidak perlu digunakanLIKE
dalamWHERE
klausa.sumber