mysql substring substring_index functions with examples
MySQL SUBSTRING ve SUBSTRING_INDEX işlevleri ve kullanımı hakkında birçok örnekle bilgi edinin:
MySQL Substring işlevi, giriş dizesine karşı bir alt dizeyi veya bölüm dizesini çıkarmak için kullanılır. Adından da anlaşılacağı gibi, Substring işlevi bir dize girdisi üzerinde çalışır ve belirtilen seçeneklere karşı daha küçük bir alt dize döndürür.
Ayrıca, SUBSTRING'in SUBSTRING_INDEX adlı başka bir varyantını da öğreneceğiz. Bu işlev, karakter veya String değerini sınırlayıcı olarak kabul eder ve verilen sınırlayıcı değerine karşı bir arama yürütür.
Ayrıca, SELECT sorgularının bir parçası olarak verileri sorgularken bu işlevlerin nasıl kullanılabileceğini anlamak için bazı örneklere de bakacağız.
Ne öğreneceksin:
MySQL SUBSTRING
Sözdizimi:
// format 1 SELECT SUBSTRING('{String Value}', {start_index}, {count}); // format 2 SELECT SUBSTRING('{String Value}'FROM {start_index} for {count});
SUBSTRING işlevini kullanmanın 2 yolu vardır.
Örneklere geçmeden önce söz dizimini anlayalım.
- {Dize değeri}: Bu, gerçek String değeri veya üzerinde çalışılacak String'i içeren sütun adıdır.
- {Dizini başlat}: start_index, Substring'in başlatılacağı soldan veya sağdan dizindir. Değerler, String'i sırasıyla sol taraftan veya sağ taraftan çıkarmak isteyip istemediğimize bağlı olarak pozitif veya negatif olabilir. Örneklerle bu daha netleşecektir.
- {Miktar}: Bu alan isteğe bağlıdır ve sayfadaki karakter sayısını belirtir. Dizini başlat Substring'in çıkarılması gereken alan. Bahsedilmediyse, eşleşmeden başlayarak tüm String Dizini başlat iade edilecektir.
Biçim2, FROM ve FOR anahtar sözcükleri kullanıldığında daha okunaklı olması dışında biçim1'in bir varyasyonudur. Yani burada FROM, Dizini başlat değer ve FOR belirtilmeden önce kullanılır Miktar .
MySQL SUBSTRING işlevini anlamak için bazı örnekler görelim.
String Input değerini şu şekilde alalım: Yazılım Test Yardımı
Dize Dizinleri aşağıdaki tablo gibi görünecektir
1 | iki | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | on bir | 12 | 13 | 14 | on beş | 16 | 17 | 18 | 19 | yirmi | yirmi bir |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
S | veya | f | t | içinde | -e | r | dır-dir | T | dır-dir | s | t | ben | n | g | H | dır-dir | l | p |
MySQL SUBSTRING Örneği
Sayısız
Yukarıdaki Dize'den Yardım metnini çıkarmak istediğimizi varsayalım - H'nin indeksi 18'dir.
Aşağıdaki sorguya bakalım:
SELECT SUBSTRING('Software Testing Help', 18) as extracted_string; SELECT SUBSTRING('Software Testing Help' FROM 18) as extracted_string; // Output Help
Burada herhangi bir değerden bahsetmediğimizi belirtmek önemlidir. Miktar, ancak hala doğru String'i alıyoruz - bunun nedeni, sayı atlandığında, verilen dizinden başlayarak tüm String'in döndürülmesidir.
Bu durumda, başlangıç Dizininden bahsedersek, Örneğin, 'T' için (Dizin 10)
SELECT SUBSTRING('Software Testing Help', 10) as extracted_string; //Output Testing Help
Yukarıda görebileceğiniz gibi, çıktı 'Test Yardımı' metninin tamamını içerir.
Count ile
Şimdi, döndürülecek karakterlerin sayısından bahsedeceğimiz bir örneğe bakalım.
Dize 'Yazılım Test Yardımı' ndan 'Test' kelimesini çıkarmak istediğimizi varsayalım. O zaman - 7 olarak sayabiliriz ('Testing kelimesinin uzunluğu budur)
Aşağıdaki sorguya bakalım:
SELECT SUBSTRING('Software Testing Help', 10, 7) as extracted_string; SELECT SUBSTRING('Software Testing Help' FROM 10 FOR 7) as extracted_string; //Output Testing
Burada, gerekli sonucu elde etmek için sorgunun bir parçası olarak hem başlangıç dizinini hem de karakter sayısını açıkladık.
Negatif Endeks Değerleri ile
Şimdiye kadar gördüğümüz örnekler için, Dizini başlat pozitif bir değer olarak.
Ayrıca start_index'i negatif olarak da belirtebiliriz, bu sadece soldan saymak yerine MySQL motorunun Dizginin sonundan itibaren başlangıç Dizinini saymaya çalışacağı anlamına gelir.
Bir örnek görelim
String 'Software Testing Help' için, doğru dizinleri belirlemek üzere aşağıya bir satır ekleyelim
L | 1 | iki | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | on bir | 12 | 13 | 14 | on beş | 16 | 17 | 18 | 19 | yirmi | yirmi bir |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
S | veya | f | t | içinde | -e | r | dır-dir | T | dır-dir | s | t | ben | n | g | H | dır-dir | l | p | |||
R | yirmi bir | yirmi | 19 | 18 | 17 | 16 | on beş | 14 | 13 | 12 | on bir | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | iki | 1 |
Yani, buradaki alt sıra doğru dizinleri temsil ediyor. Şimdi MySQL SUBSTRING işlevini doğru indeksle kullanarak 'Test' kelimesini çıkarmak istediğimizi varsayalım.
Testte 'T' için sağdaki dizin 12'dir (ve soldaki dizin 10'dur)
SELECT SUBSTRING('Software Testing Help', -12, 7) as extracted_string; SELECT SUBSTRING('Software Testing Help' FROM -12 FOR 7) as extracted_string; //Output Testing
Yukarıdaki örnekte görebileceğiniz gibi, doğru dizinlerden negatif bir değer olarak bahsetmek yine de aynı sonucu verecektir.
Sınır Dışı Dizin
Şimdi, bazı olumsuz senaryolar deneyin
- Belirtilen start_index mevcut olmadığında: yani, belirtilen dizin sınırların dışındadır, bu durumda çıktı boş olacaktır.
SELECT SUBSTRING('Software Testing Help', 30, 2) as extracted_string; //output Empty String
- Belirtilen sayı negatifse veya dizenin toplam uzunluğundan daha fazla olduğunda, çıktı sadece String'in geri kalanı olacaktır (belirtilen başlangıç_dizini başlar).
SELECT SUBSTRING('Software Testing Help', 5, 100) as extracted_string; //output ware Testing Help
Yukarıda gördüğünüz gibi, burada sayı 100 olarak belirtilmiştir, ancak Dize sadece 21 karakter uzunluğundadır.
- Negatif olarak belirtilen sayının olduğu bir senaryo daha deneyelim.
SELECT SUBSTRING('Software Testing Help', 5, -20) as extracted_string; //output Empty String
Burada da hata olmayacak ve sadece çıktı olacak boş bir dizge olacaktır.
MySQL SUBSTRING_INDEX
Bu, MySQL SUBSTRING işlevinin başka bir çeşididir.
Burada, start_index'in gerçek değerinden bahsetmek yerine, çıktıyı döndürmeden önce karakter ve dizinden ve sınırlayıcının kaç kez aranması gerektiğinden bahsedebiliriz.
Burada dikkat edilmesi gereken önemli bir nokta şudur: SUBSTRING_INDEX
MySQL SUBSTRING INDEX işlevi:
SUBSTRING_INDEX({StringValue/Column},delimiter,n)
- {StringValue / Column}: Gerçek Dize girişi veya SELECT sorgusundaki sütun adı.
- Sınırlayıcı: Kalan String'i çıktı olarak ayıklamak için aranması gereken karakter veya alt dizedir. Bu değer büyük / küçük harfe duyarlıdır, bu nedenle gerçek Dize'de göründüğü gibi belirtilmelidir.
- n: Sınırlayıcı sayısı - yani, String döndürülmeden önce sınırlayıcının aranma sayısı.
Bunu bazı örnekler yardımıyla anlayalım.
Aşağıdaki bir sonraki bölümde tartışacağımız tüm örnekler için Giriş Dizimiz olarak aynı 'Yazılım Test Yardımı' dizesini kullanacağız.
Bir Karakter Arama
'T' karakteri aranırken, çıktı 'Yazılım' olacaktır. Yazılım kelimesinden sonraki fazladan boşluğun da ekleneceğine dikkat edin.
SELECT SUBSTRING_INDEX('Software Testing Help', 'T', 1) as extracted_string; //Output Software
Birden çok kez görünen bir karakteri arayın. İşte - 'e'
SELECT SUBSTRING_INDEX('Software Testing Help', 'e', 1) as extracted_string; //Output Softwar
Bu örnekte: sayımı 1 olarak belirlediğimizden, 'e' nin ilk oluşumuna ulaşılana kadar çıktı String olacaktır.
Aynı 'e' karakteri için sayıyı 2 olarak değiştirin.
SELECT SUBSTRING_INDEX('Software Testing Help', 'e', 2) as extracted_string; //Output Software T
Şimdi, 'e' karakterinin ikinci oluşumuna kadar olan alt dizenin döndürüldüğünü görebiliriz.
SUBSTRING INDEX'in büyük / küçük harfe duyarlı olduğunu anlamak için başka bir örnek alın. 'T' yerine 't' harfini deneyelim
Windows'ta bir apk dosyası nasıl açılır
SELECT SUBSTRING_INDEX('Software Testing Help', 't', 1) as extracted_string; //Output Sof
Bir Dize Arama
Bir karakter yerine bir dizge aramak için SUBSTRING INDEX işlevini kullanabiliriz. 'Test' kelimesini arayalım.
SELECT SUBSTRING_INDEX('Software Testing Help', 'Testing', 1) as extracted_string; //Output Software
Mevcut Olmayan Bir Dizeyi Arama
SUBSTRING INDEX'i mevcut olmayan bir String ile kullanma.
SELECT SUBSTRING_INDEX('Software Testing Help', 'abc', 1) as extracted_string; //Output Software Testing Help
Çıktı burada biraz beklenmedik olabilir. Ancak MySQL Motoru gerekli eşleşmeyi bulamadığından, tüm dizeyi çıktı olarak döndürür.
Ters Sırayla Karakter veya Dize Arama
ALTSTRING işlevine benzer şekilde, ALTSTRING INDEX işlevi de negatif sayılar olarak belirtilen sayının olmasına izin verir. Bu, soldan sağa geçmek yerine, MySQL Motorunun sağdan sola bir eşleşme bulmaya çalışacağı anlamına gelir.
Bunu bazı örneklerin yardımıyla anlayın.
SELECT SUBSTRING_INDEX('Software Testing Help', 'T', -1) as extracted_string; //Output esting Help
Yukarıdaki örnekte, sayım -1 iken sınırlayıcının 'T' olduğunu görebilirsiniz. Dolayısıyla, 'T' harfi için ilk eşleşme elde edilene kadar çıktı, sağdan Alt Dize olacaktır.
MySQL SUBSTRING Fonksiyonunun Uygulamaları
1 veya birden çok tablodan verileri sorgularken genellikle MySQL String işlevlerini kullanırız. Bir sütundaki değerleri bölmek veya ihtiyaca göre sadece temel değerleri görüntülemek için kullanılabilir.
Misal: Kimlik, ad ve adresten oluşan bir çalışan ayrıntıları tablomuz olduğunu varsayalım.
Ve adres sütunu formattadır - {HouseNo}, {StreetName}
Aşağıda, bir tablo oluşturmak ve sahte veriler eklemek için Komut Dosyası bulunmaktadır:
CREATE TABLE employee_details (name VARCHAR(100), address VARCHAR(100), age INT); INSERT INTO employee_details values ('Akash Malhotra', '22,Defence Colony', 24), ('Steve Wilson','12/4,Wilson Street',28), ('Monica Singh','190,Smith Lane',32);
MySQL SUBSTRING işlevini kullanarak ev numarası aşağıda gösterildiği gibi adres sütunundan çıkarılır.
SELECT name, SUBSTRING_INDEX(address,',',1) as house_no, address, age from employee_details
Çıktı:
isim | house_no | adres | yaş |
---|---|---|---|
Akash malhotra | 22 | 22, Savunma Kolonisi | 24 |
Steve Wilson | 12/4 | 12/4, Wilson Caddesi | 28 |
Monica Singh | 190 | 190, Smith Lane | 32 |
Yukarıdaki sorguda, adres sütunundan Ev Numarasını elde etmek için SUBSTRING_INDEX işlevini kullandığımızı ve sınırlayıcı olarak ',' yi kullandığımızı görebilirsiniz.
Buna benzer olarak, daha büyük bir Dize Girişinden veya sütun değerinden bazı anlamlı bilgiler almak için Dize'yi çıkarmak istediğimiz birçok uygulama olabilir.
Sıkça Sorulan Sorular
S # 1) Hangi MySQL işlevi dizede bir SUBSTRING'in ilk oluşumunun konumunu döndürür?
Cevap: MySQL, belirli bir String veya sütun değerinden bir SUBSTRING döndürmek veya çıkarmak için 2 işlev sağlar.
- ALT STRING
Misal:
SELECT SUBSTRING('Test Input',1,4) as extracted_string; // Output Test
- ALT STRING ENDEKSİ
Misal:
SELECT SUBSTRING_INDEX('Test Input','t',1) as extracted_string; //Output Tes
S # 2) MySQL'de SUBSTRING_INDEX nedir?
Cevap: SUBSTRING_INDEX işlevi, SUBSTRING işlevinin bir çeşididir. Normal SUBSTRING işlevinde, dizini Giriş Dizesinde bir sayı olarak belirtmeniz gerekirken, SUBSTRING_INDEX işlevi için, aranacak bir karakterden veya daha küçük bir alt dizeden bahsedebilirsiniz.
Önerilen okuma = >> MySQL COUNT Eğitimi
Sonuç
Bu eğiticide, MySQL SUBSTRING ve SUBSTRING_INDEX işlevlerini öğrendik. Her iki işlev de verilen girdi dizgisine karşı bir Altdize çıkarır, ancak biraz farklı bir şekilde çalışır.
SUBSTRING, dizinin gerçek sayılar olmasını beklerken, SUBSTRING_INDEX, bir Karakter veya Dize değeri olarak belirtilmiş sınırlayıcıya sahip olabilir ve ardından MySQL Motoru, gerekli eşleşen Dize veya Karaktere göre ayıklayabilir.
Bu işlevlerin her ikisi de büyük ölçüde, birden fazla bilgi parçasına sahip bir sütunun, uygun gereksinimlere dayalı Dize çıkarma mantığı kullanılarak alt sütunlara çıkarılabildiği durumlarda kullanılır.
Önerilen Kaynaklar
- C # Dize Eğitimi - Kod Örnekleriyle Dize Yöntemleri
- Java substring () Yöntemi - Örneklerle Eğitim
- Java Dizesi () Örneklerle Yöntem Eğitimi içerir
- Programlama Örnekleriyle Java Dize Karşılaştırma Yöntemi
- C ++ 'da Dize İşlevleri: getline, alt dize, dize uzunluğu ve Daha fazlası
- C ++ Dize Dönüştürme İşlevleri: dizeden int'e & int'den dizeye
- Python Dizesi İşlevleri
- Örneklerle MySQL CONCAT ve GROUP_CONCAT İşlevleri