Masalah:
Anda ingin mengganti bagian dari string dengan string lain di MySQL.
Contoh:
Database kami memiliki tabel bernama motorbike_sale
dengan data di id
, name
, dan part_number
kolom.
id | nama | nomor_bagian |
---|---|---|
1 | Harley Davidson x | 1245-AC2-25 |
2 | Honda CB750-x | 012-GK8-A8 |
3 | Suzuki Hayabusa X | 798-25-28 |
Kami ingin mengubah nomor bagian sepeda motor dengan mengganti semua karakter tanda hubung dengan garis miring.
Solusi 1:
SELECT name, REPLACE( part_number, '-', '/' ) as new_part_number FROM motorbike_sale;
Kueri ini mengembalikan daftar nama sepeda motor dan nomor suku cadang baru. Perhatikan garis miring yang menggantikan tanda hubung di nomor bagian:
nama | nomor_bagian_baru |
---|---|
Harley Davidson x | 1245/AC2/25 |
Honda CB750-x | 012/GK8/A8 |
Suzuki Hayabusa X | 798/25/28 |
Diskusi:
Gunakan fungsi MySQL REPLACE() untuk mengganti substring (yaitu kata, karakter, dll.) dengan substring lain dan mengembalikan string yang diubah. Fungsi ini membutuhkan tiga argumen:
- String yang akan diubah. (Dalam contoh kita, ini adalah kolom
part_number
.) - Substring yang akan diganti (yaitu karakter '-').
- Substring yang akan disisipkan (yaitu karakter '/').
Perhatikan bahwa fungsi ini menggantikan semua kemunculan substring dalam string atau kolom yang diberikan. Dalam contoh kita, setiap part_number berisi tiga karakter tanda hubung, yang masing-masing diganti dengan garis miring.
Pada contoh berikutnya, kita akan mengganti semua contoh 'x' pada nama sepeda motor dengan '10'.
Solusi 2:
SELECT id, REPLACE( name, 'x', '10' ) as new_name, part_number FROM motorbike_sale WHERE id>1;
Kueri ini menggunakan klausa WHERE untuk memfilter catatan untuk baris dengan id nilai 2 atau lebih.
Perhatikan bahwa nama sepeda motor Honda diubah dari 'x' menjadi '10', tetapi nama sepeda motor Suzuki tidak diubah. Kenapa tidak? Karena REPLACE() peka huruf besar-kecil. Oleh karena itu, 'x' tidak sama dengan 'X'. Dalam contoh ini, 'x' diganti dengan '10', tetapi 'X' tidak berubah.
Permintaan ini menampilkan nama baru sepeda motor Honda dan nama lama sepeda motor Suzuki.
id | nama_baru | nomor_bagian |
---|---|---|
Honda CB750-10 | 012-GK8-A8 | |
Suzuki Hayabusa X | 798-25-28 |