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, SUBSTRING(email, 1, 7) AS substring FROM emails;
Hasilnya adalah:
substring | |
---|---|
[email protected] | jake99@ |
[email protected] | tamarab |
[email protected] | notine@ |
[email protected] | jessica |
Diskusi:
Gunakan SUBSTRING()
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.
SUBSTRING(email, 1, 7)
akan mengembalikan substring dari nilai dalam email
kolom yang dimulai dari karakter pertama dan dilanjutkan dengan tujuh karakter.
Contoh 2:
Anda ingin menampilkan substring antara indeks 2 dan 6 (inklusif).
Solusi 2:
SELECT email, SUBSTRING(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 SUBSTRING()
berfungsi seperti pada contoh sebelumnya. Kali ini, argumen kedua dari fungsi tersebut adalah 2
, karena kita ingin memulai dari indeks 2. Panjang substring adalah 5 (end_index - start_index + 1
).
Contoh 3:
Anda ingin menampilkan substring yang dimulai pada @
tanda tangani dan akhiri di akhir string, tetapi Anda tidak tahu indeks atau panjangnya yang tepat.
Solusi 3:
SELECT email, SUBSTRING(email, CHARINDEX('@', email), LEN(email) - CHARINDEX('@', 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 SUBSTRING()
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 CHARINDEX(character, column)
fungsi di mana karakter adalah karakter spesifik tempat Anda ingin memulai substring (di sini, @
). Kolom argumen adalah kolom dari mana Anda ingin mengambil substring; itu juga bisa berupa string literal.
Argumen ketiga dari SUBSTRING()
fungsi adalah panjang substring. Anda dapat menghitungnya menggunakan CHARINDEX()
dan LEN()
fungsi. Caranya dengan mengurangkan indeks dari panjang kolom kemudian menambahkan 1:
LEN(email) - CHARINDEX('@', email) + 1
Anda mungkin juga ingin mengambil substring yang tidak berakhir di akhir string tetapi pada beberapa karakter tertentu, misalnya, sebelum '.
'. Berikut cara melakukannya:
SELECT email, SUBSTRING(email, CHARINDEX('@', email), CHARINDEX('.', email) - CHARINDEX('@', email)) AS substring FROM emails;
Hasil dari query ini adalah:
substring | |
---|---|
[email protected] | @gmail |
[email protected] | @zoho |
[email protected] | @yahoo |
[email protected] | @onet |
Bagian CHARINDEX('.', email) - CHARINDEX('@', email)
cukup hitung panjang substring.