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.

  • ✂️ Amaç: SUBSTRING() fonksiyonu, kaynak ifade, başlangıç ​​konumu ve uzunluk verildiğinde bir dizenin belirli bir bölümünü döndürür.
  • 🔢 Üç argüman: SQL Server'daki SUBSTRING() fonksiyonunda ifade, başlangıç ​​pozisyonu ve toplam uzunluk zorunludur.
  • 📍 Bire dayalı endeks: Başlangıç ​​pozisyonu 1 tabanlıdır, bu nedenle ilk karakter birinci pozisyon olarak sayılır ve bu da bir eksik yazma hatalarını önler.
  • 🔎 CHARINDEX ile: SUBSTRING() ve CHARINDEX() fonksiyonlarının birlikte kullanımı, bir ayırıcı karakteri bulur ve çıkarır.tracÖnceki veya sonraki metni takip eder.
  • ↔️ Sol ve Sağ karşılaştırması: LEFT() ve RIGHT()'ın aksine, SUBSTRING() örneğintracts karakterlerini yalnızca uçlardan değil, herhangi bir konumdan da alabilirsiniz.
  • ⚠️ Sınır durumlar: Belirtilen uzunluğun boş olması durumunda NULL değeri döndürülürken, belirtilen uzunluğun ötesindeki bir uzunluk hatasız olarak kalan kısmı döndürür.

SQL Server'da SUBSTRING() Fonksiyonu ve T-SQL Örnekleri

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:

SUBSTRING() fonksiyonunun nasıl çalıştığını gösteren diyagramtracBelirli bir uzunluktaki başlangıç ​​konumundan itibaren ts karakteri

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:

GuruSUBSTRING örneklerinde kullanılan Tutorial_ID ve Tutorial_name sütunlarına sahip 99 örnek tablo.

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:

Sonuç tablosu, Tutorial_name'in ilk iki karakterini SUB sütunu olarak döndürüyor.

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:

İstenen uzunluk dizenin uzunluğunu aştığında, Tutorial_name'in kalan kısmını döndüren sonuç tablosu.

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.

SSS

SQL Server, SUBSTRING() fonksiyonunu kullanır; SUBSTR() ise bu fonksiyonda kullanılan isimdir. Oracle hem de MySQLİkisi de bir dizenin bir bölümünü döndürür, ancak SUBSTRING() standart Transact-SQL fonksiyonudur, bu nedenle SUBSTR() SQL Server'da çalışmaz.

Evet. SUBSTRING() bir değer döndürdüğü için WHERE, SELECT ve ORDER BY yan tümcelerinde yer alabilir. SUBSTRING() üzerinde filtreleme genellikle indeks aramasını engeller, bu nedenle önek aramaları için LIKE deseni genellikle daha hızlıdır.

Evet, ancak SQL Server önce değeri örtük olarak veya CAST ya da CONVERT yoluyla bir dizeye dönüştürür. Başlangıç ​​konumu ve uzunluğu daha sonra rakamları veya tarih kısımlarını değil, karakterleri sayar; bu nedenle değeri dikkatlice biçimlendirin.

Üç argümanlı form da benzer şekilde davranır, ancak ayrıntılar farklıdır. MySQL Ayrıca SUBSTR() ve negatif başlangıç ​​konumlarına da izin verirken, SQL Server SUBSTRING() kullanır ve birden düşük bir başlangıç ​​konumunu etkin uzunluk kuralı kullanarak ele alır.

SUBSTRING() işlevi, girdisiyle aynı kategoriyi döndürür: karakter verileri için varchar, Unicode metin için nvarchar ve ikili ifadeler için varbinary. Uzunluk, tüm kaynak sütununa değil, istenen alt dizeye bağlıdır.

Şalping WHERE yan tümcesi içindeki SUBSTRING() ifadesinde bir sütun, koşulu sorgulanamaz hale getirir, bu nedenle SQL Server o sütunda indeks araması kullanamaz. Önek eşleşmeleri için, LIKE 'value%' deseni genellikle daha iyi performans gösterir.

Evet. GitHub Yardımcı Pilotu Doğal dil isteminden, sınırlayıcı tabanlı ayrıştırma da dahil olmak üzere SUBSTRING() ve CHARINDEX() ifadeleri oluşturabilirsiniz. Sorguyu çalıştırmadan önce her zaman başlangıç ​​konumunu, uzunluğu ve 1 tabanlı indekslemeyi doğrulayın.

Yapay zekâ ve makine öğrenimi asistanları, düz İngilizce kuralları SUBSTRING(), CHARINDEX(), LEFT() ve RIGHT() kombinasyonlarına çevirir, uzunluk hesaplamaları önerir ve bir eksik veya fazla olan hataları işaretler. Geliştirici, her öneriyi uygulamadan önce doğruluğunu kontrol eder.

Bu yazıyı şu şekilde özetleyin: