Di MySQL versi 8.0 dan yang lebih baru, Anda dapat menggunakan REGEX_REPLACE()
fungsi. Dalam tidak adanya sama
, beberapa operasi string yang rumit dapat dilakukan. Ini didasarkan pada konfirmasi
, bahwa sub-string tersebut hanya muncul sekali dalam suatu nilai.
REPLACE()
tidak memiliki dukungan untuk wildcard, pola, ekspresi reguler, dll. Ini hanya menggantikan perbaikan yang diberikan substring dengan tetap another lainnya substring, dalam string yang lebih besar.
Sebagai gantinya, kita dapat mencoba mengekstrak bagian dari post_content
. Kami akan mengekstrak substring utama sebelum '<p><span id="more-'
menggunakan Substring_Index()
fungsi. Demikian pula, kami akan mengekstrak substring tambahan setelah '"></span></p>'
bagian.
Sekarang, kita cukup Concat()
bagian ini untuk mendapatkan post_content
yang diperlukan . Anda dapat menemukan detail berbagai fungsi String yang digunakan di sini:https://dev.mysql.com/doc/refman/8.0/en/string-functions.html
Saya juga telah menambahkan WHERE
kondisi, sehingga kami hanya memilih baris yang cocok dengan kriteria substring yang kami berikan.
UPDATE wp_posts
SET post_content =
CONCAT(
SUBSTRING_INDEX(post_content,
'<p><span id="more-',
1),
SUBSTRING(post_content,
LOCATE('"></span></p>',
post_content,
LOCATE('<p><span id="more-',
post_content)
) + 13) -- 13 is character length of "></span></p>
)
WHERE post_content LIKE '%<p><span id="more-%"></span></p>%';
Kueri #1:Data sebelum operasi Pembaruan
SELECT * FROM wp_posts;
| post_content |
| ------------------------------------------------------- |
| adasdaadsa<p><span id="more-35075"></span></p>121324124 |
| 1412123123<p><span id="more-232"></span></p>adasdaafas |
Kueri #2:Data setelah operasi Pembaruan
SELECT * FROM wp_posts;
| post_content |
| -------------------- |
| adasdaadsa121324124 |
| 1412123123adasdaafas |