Di lingkungan SQL Server, dua dari banyak fungsi string yang kami miliki adalah LEFT()
dan SUBSTRING()
.
Fungsi-fungsi ini melakukan hal yang serupa, tetapi ada perbedaan. Artikel ini membahas beberapa perbedaan utama antara fungsi-fungsi ini.
Definisi
Pertama, mari kita lihat fungsi masing-masing fungsi:
LEFT()
- Mengembalikan bagian kiri string karakter dengan jumlah karakter yang ditentukan.
SUBSTRING()
- Mengembalikan bagian dari karakter, biner, teks, atau ekspresi gambar.
Jadi LEFT()
mengembalikan hanya bagian kiri string.
SUBSTRING()
hanya mengembalikan sebagian ekspresi (tidak terbatas hanya pada bagian kiri – bisa di kiri, kanan, atau di suatu tempat di tengah).
Contoh 1 – Hasil Sama
Kedua fungsi tersebut dapat digunakan untuk mengembalikan sejumlah karakter tertentu dari kiri.
SELECT LEFT('Buckethead', 6) AS [LEFT], SUBSTRING('Buckethead', 1, 6) AS [SUBSTRING];
Hasil:
+--------+-------------+ | LEFT | SUBSTRING | |--------+-------------| | Bucket | Bucket | +--------+-------------+
Namun, LEFT()
lebih ringkas. Ini sebagian karena fakta bahwa ada lebih sedikit karakter dalam nama fungsi.
Tapi itu juga karena sintaksnya. LEFT()
fungsi hanya membutuhkan dua argumen (ekspresi, dan jumlah karakter yang akan dikembalikan), sedangkan SUBSTRING()
membutuhkan tiga argumen (ekspresi, posisi awal, dan jumlah karakter untuk kembali dari posisi awal tersebut).
Contoh 2 – Saat SUBSTRING Lebih Baik
SUBSTRING()
jauh lebih baik daripada LEFT()
saat mengambil data dari tengah string. Sebenarnya, kiri tidak dirancang untuk itu. Jika Anda benar-benar ingin menggunakan LEFT()
untuk melakukan ini, Anda perlu melakukan beberapa tipu daya, seperti menggunakan RIGHT()
berfungsi sebagai argumen pertamanya.
Contoh:
SELECT LEFT(RIGHT('Buckethead', 7), 3) AS [LEFT/RIGHT], SUBSTRING('Buckethead', 4, 3) AS [SUBSTRING];
Hasil:
+--------------+-------------+ | LEFT/RIGHT | SUBSTRING | |--------------+-------------| | ket | ket | +--------------+-------------+
Jenis Data yang Diterima
LEFT()
fungsi tidak menerima teks dan nteks tipe data sebagai argumen pertama. Ini mendukung semua tipe data lain yang dapat dikonversi ke varchar atau nvarchar .
SUBSTRING()
fungsi di sisi lain, menerima karakter , biner , teks , nteks , dan gambar ekspresi.
Mengembalikan Nilai
LEFT()
mengembalikan varchar ketika argumen pertama adalah tipe data karakter non-Unicode, dan nvarchar ketika itu adalah tipe data karakter Unicode.
Nilai yang dikembalikan untuk SUBSTRING()
adalah sebagai berikut:
Ekspresi (argumen pertama) | Jenis pengembalian |
---|---|
char /varchar /teks | varchar |
nchar /nvarchar /nteks | nvarchar |
biner /varbinary /gambar | varbiner |