Masalah:
Anda memiliki kolom string, dan Anda ingin mendapatkan substring darinya.
Contoh 1:
Di emails
tabel, ada kolom email. Anda ingin menampilkan tujuh karakter pertama dari setiap email.
Tabelnya terlihat seperti ini:
[email protected] |
[email protected] |
[email protected] |
[email protected] |
Solusi 1:
SELECT email, SUBSTR(email, 1, 7) AS substring FROM emails;
Hasilnya adalah:
substring | |
---|---|
[email protected] | jake99@ |
[email protected] | tamarab |
[email protected] | notine@ |
[email protected] | jessica |
Diskusi:
Gunakan SUBSTR()
fungsi. Argumen pertama adalah string atau nama kolom. Argumen kedua adalah indeks karakter di mana substring harus dimulai. Argumen ketiga adalah panjang substring.
Hati-Hati! Tidak seperti di beberapa bahasa pemrograman lain, indeks dimulai dari 1 , bukan 0. Ini berarti karakter pertama memiliki indeks 1, karakter kedua memiliki indeks 2, dst.
>SUBSTR(email, 1, 7) akan mengembalikan substring dari nilai di kolom email yang dimulai dari karakter pertama hingga tujuh karakter.
Contoh 2:
Anda ingin menampilkan substring antara indeks 2 dan 6 (inklusif).
Solusi 2:
SELECT email, SUBSTR(email, 2, 5) AS substring FROM emails;
Hasilnya adalah:
substring | |
---|---|
[email protected] | ake99 |
[email protected] | amara |
[email protected] | otine |
[email protected] | penting |
Diskusi:
Anda menggunakan SUBSTR()
berfungsi seperti pada contoh sebelumnya. Kali ini, argumen kedua dari fungsi tersebut adalah 2, karena kita ingin memulai pada indeks 2. Panjang substring adalah 5 (end_index - start_index + 1
).
Contoh 3:
Anda ingin menampilkan substring yang dimulai pada tanda @ dan berakhir di akhir string, tetapi Anda tidak mengetahui indeks atau panjang pastinya.
Solusi 3:
SELECT email, SUBSTR(email, INSTR(email, '@'), LENGTH(email) - INSTR(email, '@') + 1) AS substring FROM emails;
Hasilnya adalah:
substring | |
---|---|
[email protected] | @gmail.com |
[email protected] | @zoho.com |
[email protected] | @yahoo.fr |
[email protected] | @onet.pl |
Diskusi:
Anda menggunakan SUBSTR()
berfungsi seperti pada contoh sebelumnya. Kali ini, Anda sedang mencari karakter tertentu yang posisinya dapat bervariasi dari baris ke baris. Untuk menemukan indeks karakter tertentu, Anda dapat menggunakan INSTR(column, character)
fungsi, di mana kolom adalah string literal atau kolom dari mana Anda ingin mengambil substring, dan karakter adalah character
di mana Anda ingin memulai substring (di sini, @
).
Argumen ketiga dari SUBSTR()
fungsi adalah panjang substring. Anda dapat menghitungnya menggunakan INSTR()
dan LENGTH()
fungsi. Caranya dengan mengurangkan indeks dari panjang kolom kemudian menambahkan 1:
LENGTH(email) - INSTR(email, '@') + 1
Anda mungkin juga ingin mengambil substring yang tidak berakhir di akhir string tetapi pada beberapa karakter tertentu, mis., sebelum '.' Berikut cara melakukannya:
SELECT email, SUBSTR(email, INSTR(email, '@'), INSTR(email, '.') - INSTR(email, '@')) AS substring FROM emails;
Hasil dari query ini adalah:
substring | |
---|---|
[email protected] | @gmail |
[email protected] | @zoho |
[email protected] | @yahoo |
[email protected] | @onet |
Bagian INSTR(email, '.') - INSTR(email, '@')
cukup hitung panjang substring.