Fungsi Substring() di SQL Server: Cara Menggunakannya Beserta Contoh

โšก Ringkasan Cerdas

Fungsi SUBSTRING() di SQL Server, misalnya.tracts merupakan bagian dari karakter, teks, atau ekspresi biner, yang mengembalikan sejumlah karakter dari posisi awal yang dipilih, dan berpasangan secara alami dengan CHARINDEX untuk penguraian berdasarkan pembatas.

  • ๏ธ Tujuan: Fungsi SUBSTRING() mengembalikan bagian tertentu dari sebuah string, berdasarkan ekspresi sumber, posisi awal, dan panjangnya.
  • ๐Ÿ”ข Tiga argumen: Ekspresi, posisi awal, dan panjang total semuanya wajib ada dalam fungsi SUBSTRING() SQL Server.
  • ๐Ÿ“ Indeks berbasis satu: Posisi awal berbasis 1, jadi karakter pertama dihitung sebagai posisi satu, yang menghindari kesalahan selisih satu angka.
  • ๐Ÿ”Ž Dengan CHARINDEX: Menggabungkan SUBSTRING() dengan CHARINDEX() akan menemukan pembatas dan extracts teks sebelum atau sesudahnya.
  • ๏ธ Dibandingkan dengan KIRI dan KANAN: Tidak seperti LEFT() dan RIGHT(), SUBSTRING() misalnyatrackarakter ts dari posisi mana pun, bukan hanya dari ujung.
  • โš ๏ธ Kasus-kasus tepi: Panjang NULL akan mengembalikan NULL, sedangkan panjang yang melebihi string akan mengembalikan sisanya tanpa menimbulkan kesalahan.

Fungsi SUBSTRING() di SQL Server dengan Contoh T-SQL

Apa itu Substring()?

SUBSTRING() adalah sebuah fungsi dalam SQL yang memungkinkan pengguna untuk mengambil substring dari string apa pun sesuai kebutuhan. SUBSTRING() contohtracFungsi SUBSTRING() mengembalikan string dengan panjang tertentu, dimulai dari lokasi tertentu dalam string input. Tujuan dari SUBSTRING() dalam SQL adalah untuk mengembalikan bagian tertentu dari string.

Sintaks untuk Substring()

SUBSTRING(Expression, Starting Position, Total Length)

Sini:

  • Ekspresi SUBSTRING() di SQL Server Dapat berupa karakter apa pun, biner, teks, atau gambar. Ekspresi adalah string sumber dari mana substring diambil.
  • Posisi Awal menentukan posisi dalam Ekspresi tempat substring baru harus dimulai.
  • Panjang Total adalah panjang total yang diharapkan dari substring hasil Ekspresi, dimulai dari Posisi Awal.

Aturan penggunaan SUBSTRING()

  • Ketiga argumen tersebut wajib ada dalam fungsi SUBSTRING() MS SQL.
  • Jika Posisi Awal lebih besar dari jumlah karakter maksimum dalam Ekspresi, maka fungsi SUBSTRING() di SQL Server tidak akan mengembalikan apa pun.
  • Panjang Total dapat melebihi panjang karakter maksimum dari string asli. Dalam hal ini, substring yang dihasilkan adalah seluruh string, dimulai dari Posisi Awal dalam Ekspresi hingga karakter terakhir dari Ekspresi.

Diagram di bawah ini mengilustrasikan penggunaan fungsi SUBSTRING() di SQL Server:

Diagram yang menunjukkan bagaimana SUBSTRING() extracts karakter dari posisi awal untuk panjang tertentu

Contoh Substring T-SQL

Asumsi: Anggaplah kita memiliki tabel bernama 'Guru99' dengan dua kolom dan empat baris, seperti yang ditampilkan di bawah ini. Kita akan menggunakan ini 'GuruTabel 99' pada contoh berikut:

Guru99 tabel sampel dengan kolom Tutorial_ID dan Tutorial_name yang digunakan dalam contoh SUBSTRING

Pertanyaan 1: SUBSTRING() dalam SQL dengan panjang kurang dari panjang maksimum total ekspresi.

SELECT Tutorial_name, SUBSTRING(Tutorial_name,1,2) As SUB from Guru99;

Hasil: Diagram di bawah ini menampilkan substring dari kolom 'Tutorial_name' sebagai kolom 'SUB'. Posisi awal adalah 1 dan panjangnya adalah 2, sehingga dua karakter pertama dikembalikan:

Grid hasil yang mengembalikan dua karakter pertama dari Tutorial_name sebagai kolom SUB.

Pertanyaan 2: Fungsi SUBSTRING() di SQL Server dengan panjang yang lebih besar dari panjang maksimum total ekspresi.

SELECT Tutorial_name, SUBSTRING(Tutorial_name,2,8) As SUB from Guru99;

Hasil: Diagram di bawah ini menampilkan substring dari kolom 'Tutorial_name' sebagai kolom 'SUB'. Meskipun panjang substring lebih besar dari panjang maksimum total ekspresi, tidak ada kesalahan yang muncul dan kueri mengembalikan string lengkap dari posisi awal dan seterusnya:

Grid hasil yang mengembalikan sisa dari Tutorial_name ketika panjang yang diminta melebihi string.

SUBSTRING dengan CHARINDEX di SQL Server

Salah satu penggunaan umum fungsi SUBSTRING() di dunia nyata adalah untuk mengekstraktracFungsi SUBSTRING() mengambil teks yang terletak sebelum atau sesudah pembatas, seperti domain dalam alamat email. Secara sendiri, SUBSTRING() membutuhkan posisi awal yang tetap, tetapi posisi pembatas bervariasi dari baris ke baris. Fungsi CHARINDEX() mengatasi hal ini dengan mengembalikan posisi karakter di dalam string:

CHARINDEX(substring_to_find, expression [, start_location])

Dengan menyisipkan CHARINDEX() di dalam SUBSTRING(), posisi awal menjadi dinamis. Contoh di bawah ini menemukan @ simbol dan mengembalikan semua yang ada setelahnya. A variabel menyimpan nilai sampel:

DECLARE @Email VARCHAR(50) = 'john.doe@guru99.com';
SELECT SUBSTRING(@Email, CHARINDEX('@', @Email) + 1, LEN(@Email)) AS Domain;

Di sini, CHARINDEX('@', @Email) menemukan posisi simbol @, menambahkan 1 untuk melewatinya, dan SUBSTRING() kemudian mengekstraktracts karakter yang tersisa. Untuk nilai di atas, kueri mengembalikan domain. guru99.comPola CHARINDEX-plus-SUBSTRING ini adalah cara standar untuk mengurai string terstruktur di T-SQL.

SUBSTRING vs LEFT dan RIGHT di SQL Server

SQL Server juga menyediakan fungsi LEFT() dan RIGHT() untuk mengambil karakter dari awal atau akhir string. Fungsi-fungsi ini lebih singkat untuk ditulis, tetapi terbatas pada kedua ujungnya. SUBSTRING() adalah yang paling fleksibel karena dapat dimulai dari posisi mana pun. Tabel di bawah ini membandingkan ketiganya:

fungsi kasus Extracts dari SUBSTRING() yang setara
LEFT(ekspresi, n) 2 Mulai dari string SUBSTRING(ekspresi, 1, n)
KANAN(ekspresi, n) 2 Ujung tali SUBSTRING(ekspresi, LEN(ekspresi) โ€“ n + 1, n)
SUBSTRING(ekspresi, awal, panjang) 3 Posisi apapun Tidak berlaku

Singkatnya, LEFT() dan RIGHT() adalah pintasan praktis untuk ujung-ujung string, sedangkan SUBSTRING() menangani kasus umum, termasuk karakter yang diambil dari tengah.

Argumen Negatif, Nol, dan NULL dalam SUBSTRING

Di luar aturan dasar, ada baiknya mengetahui bagaimana fungsi SUBSTRING() berperilaku di bagian tepinya. Ketika posisi awal adalah nol atau negatif, SQL Server menghitung panjang efektif (awal + panjang โ€“ 1) dan mulai membaca dari posisi pertama. Ketika argumen apa pun adalah NULL, hasilnya adalah NULL. Tabel di bawah ini, telah diverifikasi terhadap data resmi. SUBSTRING (Transact-SQL) Referensi tersebut menunjukkan kasus-kasus berikut:

Memanggil Hasil Alasan
SUBSTRING('Guru99', 1, 4) Guru Panggilan normal: empat karakter dari posisi pertama.
SUBSTRING('Guru99', 0, 3) Gu Mulai dari bawah satu: panjang efektifnya adalah 0 + 3 โ€“ 1 = 2.
SUBSTRING('Guru99', 4, 100) u99 Panjang yang melebihi batas string akan mengembalikan sisanya, tanpa kesalahan.
SUBSTRING('Guru99', 3, NULL) NULL Argumen NULL membuat seluruh hasil menjadi NULL.

Mengetahui kasus-kasus khusus ini mencegah kejutan ketika posisi awal dihitung dari kolom lain atau variabel Nilai tersebut bisa nol atau NULL.

Pertanyaan Umum Demo Slot

SQL Server menggunakan SUBSTRING(); SUBSTR() adalah nama yang digunakan dalam Oracle ke MySQLKeduanya mengembalikan sebagian dari sebuah string, tetapi SUBSTRING() adalah fungsi standar Transact-SQL, sehingga SUBSTR() tidak akan berjalan di SQL Server.

Ya. Karena SUBSTRING() mengembalikan nilai, fungsi ini dapat muncul dalam klausa WHERE, SELECT, dan ORDER BY. Pemfilteran berdasarkan SUBSTRING() biasanya mencegah pencarian indeks, sehingga pola LIKE seringkali lebih cepat untuk pencarian awalan.

Ya, tetapi SQL Server pertama-tama mengkonversi nilai tersebut menjadi string, baik secara implisit maupun melalui CAST atau CONVERT. Posisi awal dan panjangnya kemudian menghitung karakter, bukan angka atau bagian tanggal, jadi format nilainya dengan hati-hati.

Bentuk tiga argumen berperilaku serupa, tetapi detailnya berbeda. MySQL juga mengizinkan SUBSTR() dan posisi awal negatif, sedangkan SQL Server menggunakan SUBSTRING() dan memperlakukan posisi awal di bawah satu menggunakan aturan panjang efektif.

Fungsi SUBSTRING() mengembalikan kategori yang sama dengan inputnya: varchar untuk data karakter, nvarchar untuk teks Unicode, dan varbinary untuk ekspresi biner. Panjangnya bergantung pada substring yang diminta, bukan pada keseluruhan kolom sumber.

Bungkusping Kolom yang menggunakan SUBSTRING() di dalam klausa WHERE membuat predikat tidak dapat di-sargable, sehingga SQL Server tidak dapat menggunakan pencarian indeks pada kolom tersebut. Untuk pencocokan awalan, pola LIKE 'value%' biasanya memberikan performa yang lebih baik.

Ya. Kopilot GitHub Dapat membuat ekspresi SUBSTRING() dan CHARINDEX(), termasuk penguraian berbasis pembatas, dari perintah bahasa alami. Selalu verifikasi posisi awal, panjang, dan pengindeksan berbasis 1 sebelum menjalankan kueri.

Asisten AI dan pembelajaran mesin menerjemahkan aturan bahasa Inggris biasa ke dalam kombinasi SUBSTRING(), CHARINDEX(), LEFT(), dan RIGHT(), menyarankan perhitungan panjang, dan menandai kesalahan selisih satu angka. Pengembang meninjau setiap saran untuk memastikan kebenarannya sebelum menerapkannya.

Ringkaslah postingan ini dengan: