SQL Server'da Substring() Fonksiyonu: Örnekle Nasıl Kullanılır?
⚡ Akıllı Özet
SQL Server'da SUBSTRING() örneğitracBir karakterin, metnin veya ikili ifadenin bir bölümünü döndürür; seçilen bir başlangıç konumundan belirli sayıda karakter döndürür ve sınırlayıcı tabanlı ayrıştırma için CHARINDEX ile doğal olarak eşleşir.
Substring() nedir?
SUBSTRING() bir fonksiyondur. SQL Kullanıcının ihtiyacına göre herhangi bir verilen dizeden bir alt dize türetmesine olanak tanır. SUBSTRING() örneğitracSQL'de SUBSTRING() fonksiyonunun amacı, giriş dizesinde belirli bir konumdan başlayarak, belirli bir uzunluktaki bir dizeyi döndürmektir.
Substring() için sözdizimi
SUBSTRING(Expression, Starting Position, Total Length)
İşte:
- SUBSTRING() ifadesi SQL Server Herhangi bir karakter, ikili sayı, metin veya resim olabilir. İfade, alt dizenin alınacağı kaynak dizedir.
- Başlangıç Konumu, yeni alt dizenin İfadede nereden başlayacağını belirler.
- Toplam Uzunluk, Başlangıç Konumundan başlayarak İfadeden elde edilen alt dizenin beklenen toplam uzunluğudur.
SUBSTRING() işlevini kullanma kuralları
- MS SQL SUBSTRING() fonksiyonunda her üç argüman da zorunludur.
- Başlangıç konumu, ifadede yer alan maksimum karakter sayısından büyükse, SQL Server'daki SUBSTRING() fonksiyonu hiçbir sonuç döndürmez.
- Toplam uzunluk, orijinal dizenin maksimum karakter uzunluğunu aşabilir. Bu durumda, ortaya çıkan alt dize, ifadenin başlangıç konumundan ifadenin son karakterine kadar olan tüm dizedir.
Aşağıdaki diyagram, SQL Server'da SUBSTRING() fonksiyonunun kullanımını göstermektedir:
T-SQL Alt Dize Örnekleri
Varsayım: ' adında bir tablomuz olduğunu varsayalım.GuruAşağıda gösterildiği gibi, iki sütun ve dört satırdan oluşan 99'luk bir yapı kullanacağız. Bu 'GuruAşağıdaki örneklerde 99' tablosu kullanılmaktadır:
Sorgu 1: SQL'de SUBSTRING() fonksiyonunun uzunluğu, ifadenin toplam maksimum uzunluğundan daha az olacak şekilde kullanılır.
SELECT Tutorial_name, SUBSTRING(Tutorial_name,1,2) As SUB from Guru99;
Sonuç: Aşağıdaki diyagram, 'Tutorial_name' sütunundaki alt dizeyi 'SUB' sütunu olarak göstermektedir. Başlangıç pozisyonu 1 ve uzunluğu 2 olduğundan, ilk iki karakter döndürülür:
Sorgu 2: SQL Server'da SUBSTRING() fonksiyonunu, ifadenin toplam maksimum uzunluğundan daha uzun bir uzunlukla kullanmak.
SELECT Tutorial_name, SUBSTRING(Tutorial_name,2,8) As SUB from Guru99;
Sonuç: Aşağıdaki diyagram, 'Tutorial_name' sütunundaki alt dizeyi 'SUB' sütunu olarak göstermektedir. Alt dizenin uzunluğu, ifadenin toplam maksimum uzunluğundan daha büyük olmasına rağmen, herhangi bir hata oluşmaz ve sorgu başlangıç konumundan itibaren tam dizeyi döndürür:
SQL Server'da CHARINDEX ile SUBSTRING
SUBSTRING() fonksiyonunun gerçek dünyadaki çok yaygın bir kullanım alanı, örneğin şu şekildedir:tracBir ayırıcıdan önce veya sonra gelen metin, örneğin bir e-posta adresindeki alan adı gibi. SUBSTRING() işlevi tek başına sabit bir başlangıç konumuna ihtiyaç duyar, ancak bir ayırıcının konumu satırdan satıra değişir. CHARINDEX() işlevi, bir karakterin dize içindeki konumunu döndürerek bu sorunu çözer:
CHARINDEX(substring_to_find, expression [, start_location])
CHARINDEX() fonksiyonunu SUBSTRING() fonksiyonunun içine yerleştirerek, başlangıç pozisyonu dinamik hale gelir. Aşağıdaki örnek, başlangıç pozisyonunu bulur. @ sembolü alır ve ondan sonra gelen her şeyi döndürür. A değişken Örnek değeri tutar:
DECLARE @Email VARCHAR(50) = 'john.doe@guru99.com'; SELECT SUBSTRING(@Email, CHARINDEX('@', @Email) + 1, LEN(@Email)) AS Domain;
Burada, CHARINDEX('@', @Email) @ sembolünün konumunu bulur, 1 eklemek ondan sonraki konuma geçer ve ardından SUBSTRING() fonksiyonu kullanılır.tracGeri kalan karakterleri döndürür. Yukarıdaki değer için sorgu etki alanını döndürür. guru99.comBu CHARINDEX-artı-SUBSTRING kalıbı, T-SQL'de yapılandırılmış dizeleri ayrıştırmanın standart yoludur.
SQL Server'da SUBSTRING ile LEFT ve RIGHT arasındaki fark
SQL Server ayrıca, bir dizenin başından veya sonundan karakter çekmek için LEFT() ve RIGHT() işlevlerini de sağlar. Bunlar daha kısa yazılır, ancak yalnızca iki uçla sınırlıdırlar. SUBSTRING() ise herhangi bir konumdan başlayabildiği için en esnek olanıdır. Aşağıdaki tabloda bunlar karşılaştırılmıştır:
| İşlev | Argümanlar | Extracts'den | Eşdeğer ALT DİZİ() |
| SOL(ifade, n) | 2 | Dizenin başlangıcı | ALT DİZİ(ifade, 1, n) |
| DOĞRU(ifade, n) | 2 | dizenin sonu | ALT DİZİ(ifade, UZUNLUK(ifade) – n + 1, n) |
| ALT DİZİ(ifade, başlangıç, uzunluk) | 3 | Herhangi bir pozisyon | Uygulanamaz |
Özetle, LEFT() ve RIGHT() bir dizenin uçları için kullanışlı kısayollardır, SUBSTRING() ise ortadan alınan karakterler de dahil olmak üzere genel durumu ele alır.
SUBSTRING fonksiyonunda Negatif, Sıfır ve NULL argümanlar
Temel kuralların ötesinde, SUBSTRING() fonksiyonunun uç noktalarda nasıl davrandığını bilmek faydalıdır. Başlangıç pozisyonu sıfır veya negatif olduğunda, SQL Server (başlangıç + uzunluk – 1) etkin uzunluğunu hesaplar ve birinci pozisyondan okumaya başlar. Herhangi bir argüman NULL olduğunda, sonuç NULL olur. Aşağıdaki tablo, resmi verilerle doğrulanmıştır. ALT DİZİ (Transact-SQL) Referans, şu durumları göstermektedir:
| Çağrı | Sonuç | Neden |
| ALT DİZİ('Guru99', 1, 4) | Guru | Normal çağrı: birinci pozisyondan dört karakter. |
| ALT DİZİ('Guru99', 0, 3) | Gu | Birin altından başlayın: etkili uzunluk 0 + 3 – 1 = 2'dir. |
| ALT DİZİ('Guru99', 4, 100) | u99 | Dizenin uzunluğunun ötesinde kalan kısmı hatasız olarak döndürür. |
| ALT DİZİ('Guru99', 3, NULL) | NULL | Boş bir argüman, tüm sonucu boş (NULL) yapar. |
Bu istisnai durumları bilmek, başlangıç pozisyonunun başka bir sütundan veya başka bir kaynaktan hesaplandığı durumlarda sürprizleri önler. değişken Bu değer sıfır veya NULL olabilir.





