Masalah:
Anda ingin membagi string di MySQL.
Contoh:
Basis data kami memiliki tabel bernama Student
dengan data pada kolom id
dan name
.
id | nama |
---|---|
1 | Ann Smith |
2 | Mark Twain |
3 | Brad Hijau |
Mari kita ambil data dari nama kolom dan pisahkan menjadi firstname
dan lastname
.
Solusi:
Kami akan menggunakan SUBSTRING_INDEX()
fungsi. Berikut pertanyaannya:
SELECT SUBSTRING_INDEX(name,' ',1) AS firstname, SUBSTRING_INDEX(name,' ',-1) AS lastname FROM Student
Berikut hasil querynya:
nama depan | nama belakang |
---|---|
Ann | Smith |
Tandai | Kembar |
Brad | Hijau |
Diskusi:
Fungsi SUBSTRING_INDEX()
membutuhkan 3 argumen:string sumber, pembatas, dan jumlah kemunculan pembatas.
string sumber adalah string yang ingin kita bagi.
Pembatas adalah string karakter yang SUBSTRING_INDEX()
fungsi mencari di string sumber. Ketika ditemukan, ini menunjukkan tempat di mana substring berakhir. Pembatas dapat berupa karakter tunggal seperti spasi, tetapi dapat juga berupa pola yang terdiri dari dua karakter atau lebih. Pola ini peka huruf besar/kecil; yaitu, penting apakah karakter yang diberikan adalah huruf besar atau kecil. Ingat bahwa pembatasnya adalah string, jadi harus ditulis dalam tanda kutip (‘’).
Argumen terakhir adalah jumlah kejadian . Ini menunjukkan berapa kali pola pembatas perlu dicocokkan. Perhatikan bahwa jumlah kemunculan dapat berupa nilai negatif. Ketika negatif, kami menghitung kemunculan pembatas dari kanan. Jika hitungannya bilangan positif, kita hitung dari kiri.
Fungsi mengeluarkan setiap karakter string sumber hingga pembatas dicocokkan dengan berapa kali yang diberikan oleh hitungan kemunculan.
Jika kita menjalankan kueri berikut:
SELECT SUBSTRING_INDEX('Ann Smith',' ',1);
outputnya adalah:
Ann
Seperti yang Anda lihat, fungsi mengembalikan semua karakter hingga spasi pertama dari kiri ditemukan.
Dalam contoh kami, kami mengambil sebagai nama depan siswa semua karakter hingga spasi pertama dari kiri dan sebagai nama belakang siswa semua karakter hingga spasi pertama dari kanan.