mysql substring substring_index functions with examples
Dowiedz się o funkcjach MySQL SUBSTRING i SUBSTRING_INDEX oraz ich zastosowaniu z wieloma przykładami:
Funkcja MySQL Substring służy do wyodrębniania podciągu lub części ciągu z ciągu wejściowego. Jak sama nazwa wskazuje, funkcja Substring działa na łańcuchu wejściowym i zwraca mniejszy podciąg względem podanych opcji.
Dowiemy się również o innym wariancie SUBSTRING o nazwie SUBSTRING_INDEX. Ta funkcja przyjmuje znak lub wartość ciągu jako separator i wykonuje wyszukiwanie względem podanej wartości separatora.
Przyjrzymy się również niektórym przykładom, aby zrozumieć, jak te funkcje mogą być używane podczas wykonywania zapytań o dane w ramach zapytań SELECT.
Czego się nauczysz:
PODCIĄG MySQL
Składnia:
// format 1 SELECT SUBSTRING('{String Value}', {start_index}, {count}); // format 2 SELECT SUBSTRING('{String Value}'FROM {start_index} for {count});
Istnieją dwa sposoby użycia funkcji PODCIĄG.
Zrozummy składnię, zanim przejdziemy do przykładów.
- {Wartość ciągu}: To jest rzeczywista wartość ciągu lub nazwa kolumny zawierającej ciąg, nad którym należy pracować.
- {start_index}: start_index to indeks od lewej lub prawej strony, gdzie podłańcuch zostałby rozpoczęty. Wartości mogą być dodatnie lub ujemne w zależności od tego, czy chcemy wyodrębnić ciąg znaków odpowiednio z lewej, czy prawej strony. Dzięki przykładom stanie się to bardziej jasne.
- {liczyć}: To pole jest opcjonalne i określa liczbę znaków z start_index pole, dla którego podciąg ma zostać wyodrębniony. Jeśli nie zostało wspomniane, to cały ciąg zaczynający się od dopasowania start_index zostanie zwrócony.
Format2 to odmiana formatu1, z tą różnicą, że jest bardziej czytelny dzięki słowom kluczowym FROM i FOR. Więc tutaj FROM jest używany przed wzmianką o start_index wartość, a FOR jest używany przed wzmianką o liczyć .
Zobaczmy kilka przykładów, aby zrozumieć funkcję PODCIĄGNIKA MySQL.
Weźmy wartość wejściową typu String jako Pomoc w testowaniu oprogramowania
Indeksy ciągów będą wyglądać jak w poniższej tabeli
1 | dwa | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | jedenaście | 12 | 13 | 14 | piętnaście | 16 | 17 | 18 | 19 | 20 | dwadzieścia jeden |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
S | lub | fa | t | w | do | r | jest | T | jest | s | t | ja | n | sol | H. | jest | l | p |
Przykład PODCIĄGU MySQL
Bez hrabiego
Załóżmy, że chcemy wyodrębnić tekst pomocy z powyższego String - H ma indeks 18
Zobaczmy poniższe zapytanie:
SELECT SUBSTRING('Software Testing Help', 18) as extracted_string; SELECT SUBSTRING('Software Testing Help' FROM 18) as extracted_string; // Output Help
W tym miejscu należy zauważyć, że nie wymieniliśmy żadnej wartości parametru liczyć, ale nadal otrzymujemy poprawny ciąg znaków - dzieje się tak, ponieważ po pominięciu licznika zwracany jest cały ciąg zaczynający się od podanego indeksu.
W tym przypadku, jeśli wspomnimy o indeksie początkowym, na przykład, zamiast „T” (indeks 10)
SELECT SUBSTRING('Software Testing Help', 10) as extracted_string; //Output Testing Help
Jak widać powyżej, wynik zawiera cały tekst „Pomoc w testowaniu”.
Z hrabią
Spójrzmy teraz na przykład, w którym wspomnimy o liczbie zwracanych znaków.
Załóżmy, że chcemy po prostu wyodrębnić słowo „Testowanie” z ciągu „Pomoc do testowania oprogramowania”. Następnie możemy wymienić liczbę jako - 7 (co jest długością słowa „Testowanie”)
Zobaczmy poniższe zapytanie:
SELECT SUBSTRING('Software Testing Help', 10, 7) as extracted_string; SELECT SUBSTRING('Software Testing Help' FROM 10 FOR 7) as extracted_string; //Output Testing
Tutaj opisaliśmy zarówno początkowy indeks, jak i liczbę znaków jako część zapytania, aby uzyskać wymagany wynik.
Z ujemnymi wartościami indeksu
Do tej pory w przykładach, które widzieliśmy, określiliśmy start_index jako wartość dodatnia.
Możemy również określić start_index jako ujemny, co po prostu oznacza, że zamiast liczyć od lewej, silnik MySQL będzie próbował policzyć indeks początkowy od końca łańcucha.
Zobaczmy przykład
Do naszego ciągu „Pomoc w testowaniu oprogramowania” dodajmy wiersz poniżej, aby zidentyfikować właściwe indeksy
L | 1 | dwa | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | jedenaście | 12 | 13 | 14 | piętnaście | 16 | 17 | 18 | 19 | 20 | dwadzieścia jeden |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
S | lub | fa | t | w | do | r | jest | T | jest | s | t | ja | n | sol | H. | jest | l | p | |||
R | dwadzieścia jeden | 20 | 19 | 18 | 17 | 16 | piętnaście | 14 | 13 | 12 | jedenaście | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | dwa | 1 |
Zatem dolny wiersz reprezentuje właściwe indeksy. Teraz przypuśćmy, że chcemy wyodrębnić słowo „Testing” za pomocą funkcji MySQL SUBSTRING z odpowiednim indeksem.
Prawy indeks „T” w testowaniu to 12 (a lewy indeks to 10)
SELECT SUBSTRING('Software Testing Help', -12, 7) as extracted_string; SELECT SUBSTRING('Software Testing Help' FROM -12 FOR 7) as extracted_string; //Output Testing
Jak widać w powyższym przykładzie, wymienienie właściwych indeksów jako wartości ujemnej nadal da ten sam wynik.
Indeks poza granicami
Teraz wypróbuj kilka negatywnych scenariuszy
- Gdy określony indeks_początkowy nie istnieje: tj. podany indeks jest poza zakresem, wtedy wynik byłby pusty.
SELECT SUBSTRING('Software Testing Help', 30, 2) as extracted_string; //output Empty String
- Gdy określona liczba jest ujemna lub większa niż całkowita długość ciągu, wynikiem będzie tylko reszta ciągu (rozpoczynając od określonego indeksu startowego).
SELECT SUBSTRING('Software Testing Help', 5, 100) as extracted_string; //output ware Testing Help
Możesz zobaczyć powyżej, tutaj liczba została wymieniona jako 100, ale ciąg ma tylko 21 znaków.
- Wypróbujmy jeszcze jeden scenariusz z liczbą wskazaną jako ujemną.
SELECT SUBSTRING('Software Testing Help', 5, -20) as extracted_string; //output Empty String
Tutaj również nie będzie błędu i będzie tylko pusty ciąg, który będzie wyjściem.
MySQL SUBSTRING_INDEX
To kolejny wariant funkcji PODCIĄGNIKA MySQL.
Tutaj, zamiast wspominać o rzeczywistej wartości start_index, możemy po prostu wspomnieć o znaku i indeksie oraz ile razy ogranicznik musi być przeszukany przed zwróceniem wyniku.
Ważną kwestią, na którą należy zwrócić uwagę, jest plik SUBSTRING_INDEX
Funkcja MySQL SUBSTRING INDEX:
SUBSTRING_INDEX({StringValue/Column},delimiter,n)
- {StringValue / Column}: Rzeczywiste dane wejściowe typu String lub nazwa kolumny w zapytaniu SELECT.
- Separator: Jest to znak lub podciąg, którego należy szukać, aby wyodrębnić pozostały ciąg jako dane wyjściowe. W tej wartości rozróżniana jest wielkość liter, więc powinna być określona tak, jak pojawia się w rzeczywistym łańcuchu.
- n: Liczba separatorów - tzn. Ile razy separator ma być przeszukiwany przed zwróceniem ciągu.
Zrozummy to na podstawie kilku przykładów.
We wszystkich przykładach, które omówimy w następnej sekcji poniżej, użyjemy tego samego ciągu „Pomoc do testowania oprogramowania”, co nasz ciąg wejściowy.
Poszukiwanie postaci
Podczas wyszukiwania znaku „T” wynikiem będzie „Oprogramowanie”. Zwróć uwagę, że dodatkowa spacja po słowie Oprogramowanie również zostanie uwzględniona.
SELECT SUBSTRING_INDEX('Software Testing Help', 'T', 1) as extracted_string; //Output Software
Wyszukaj postać, która pojawia się więcej niż raz. Tutaj jest - „e”
SELECT SUBSTRING_INDEX('Software Testing Help', 'e', 1) as extracted_string; //Output Softwar
W tym przykładzie: ponieważ określiliśmy licznik jako 1, wynikiem będzie ciąg znaków aż do pierwszego wystąpienia „e”.
Zmień liczbę na 2 dla tego samego znaku „e”.
SELECT SUBSTRING_INDEX('Software Testing Help', 'e', 2) as extracted_string; //Output Software T
Teraz widzimy, że zwracana jest podłańcuch do drugiego wystąpienia znaku „e”.
Weź inny przykład, aby zrozumieć, że w INDEKSIE PODSTRINGU wielkość liter ma znaczenie. Spróbujmy z literą „t” zamiast „T”
różnica między przypadkiem testowym a skryptem testowym
SELECT SUBSTRING_INDEX('Software Testing Help', 't', 1) as extracted_string; //Output Sof
Szukanie ciągu
Możemy użyć funkcji SUBSTRING INDEX do wyszukania łańcucha zamiast znaku. Poszukajmy słowa „testowanie”.
SELECT SUBSTRING_INDEX('Software Testing Help', 'Testing', 1) as extracted_string; //Output Software
Wyszukiwanie nieistniejącego ciągu
Używanie SUBSTRING INDEX z ciągiem, który nie istnieje.
SELECT SUBSTRING_INDEX('Software Testing Help', 'abc', 1) as extracted_string; //Output Software Testing Help
Wynik może być tutaj trochę nieoczekiwany. Ale ponieważ silnik MySQL nie może znaleźć wymaganego dopasowania, zwraca cały ciąg jako wynik.
Wyszukiwanie znaku lub ciągu w odwrotnej kolejności
Podobnie jak w przypadku funkcji PODŁAŃCUCH, funkcja INDEKS PODŁUCHU również umożliwia określenie liczby jako liczb ujemnych. Oznacza to, że zamiast przechodzić od lewej do prawej, MySQL Engine spróbuje znaleźć dopasowanie od prawej do lewej.
Zrozum to na podstawie kilku przykładów.
SELECT SUBSTRING_INDEX('Software Testing Help', 'T', -1) as extracted_string; //Output esting Help
W powyższym przykładzie separatorem jest „T”, a liczba wynosi -1. Zatem wynik byłby podciągiem od prawej strony do momentu uzyskania pierwszego dopasowania dla litery „T”.
Zastosowania funkcji SUBSTRING MySQL
Generalnie używamy funkcji ciągów MySQL podczas wykonywania zapytań dotyczących danych z jednej lub wielu tabel. Może być używany do dzielenia wartości w kolumnie lub po prostu do wyświetlania podstawowych wartości zgodnie z potrzebami.
Przykład: Załóżmy, że mamy tabelę danych pracowników, składającą się z identyfikatora, nazwiska i adresu.
A kolumna adresu ma format - {HouseNo}, {StreetName}
Poniżej znajduje się skrypt do tworzenia tabeli i wstawiania fikcyjnych danych:
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);
Użyj funkcji MySQL SUBSTRING, aby mieć rozszerzenie numer domu wyodrębniony z kolumny adresu, jak pokazano poniżej.
SELECT name, SUBSTRING_INDEX(address,',',1) as house_no, address, age from employee_details
Wynik:
Nazwa | nr_domu | adres | wiek |
---|---|---|---|
Akash malhotra | 22 | 22, Kolonia Obrony | 24 |
Steve Wilson | 12/4 | 12/4, Wilson Street | 28 |
Monica Singh | 190 | 190, Smith Lane | 32 |
W powyższym zapytaniu widać, że użyliśmy funkcji SUBSTRING_INDEX do uzyskania numeru domu z kolumny adresu i użyliśmy znaku „,” jako separatora.
Podobnie, może istnieć wiele aplikacji, w których chcielibyśmy wyodrębnić String, aby pobrać pewne znaczące informacje z większego wejścia String lub wartości kolumny.
Często Zadawane Pytania
P # 1) Która funkcja MySQL zwraca pozycję pierwszego wystąpienia PODCIĄGU w ciągu?
Odpowiedź: MySQL udostępnia 2 funkcje do zwracania lub wyodrębniania PODŁCIĄGU z podanej wartości ciągu lub kolumny.
- PODŁOŻE
Przykład:
SELECT SUBSTRING('Test Input',1,4) as extracted_string; // Output Test
- INDEKS PODCIĄGÓW
Przykład:
SELECT SUBSTRING_INDEX('Test Input','t',1) as extracted_string; //Output Tes
Pytanie 2) Co to jest SUBSTRING_INDEX w MySQL?
Odpowiedź: Funkcja SUBSTRING_INDEX jest wariantem funkcji SUBSTRING. Podczas gdy w normalnej funkcji SUBSTRING musisz podać indeks jako liczbę w ciągu wejściowym, w przypadku funkcji SUBSTRING_INDEX możesz wspomnieć o znaku lub mniejszym podciągu do wyszukania.
Sugerowana lektura = >> Samouczek MySQL COUNT
Wniosek
W tym samouczku poznaliśmy funkcje MySQL SUBSTRING i SUBSTRING_INDEX. Obie funkcje wyodrębniają podłańcuch z danego ciągu wejściowego, ale działają w nieco inny sposób.
SUBSTRING oczekuje, że indeks jest rzeczywistymi liczbami, podczas gdy SUBSTRING_INDEX może mieć ogranicznik określony jako wartość Znak lub Ciąg, a następnie silnik MySQL może wyodrębnić z wymaganego pasującego ciągu lub znaku.
Obie te funkcje są szeroko stosowane, gdy kolumna zawierająca wiele informacji może zostać wyodrębniona do kolumn podrzędnych przy użyciu logiki ekstrakcji ciągów w oparciu o odpowiednie wymagania.
rekomendowane lektury
- C # String Tutorial - Metody ciągów z przykładami kodu
- Metoda substring () Java - samouczek z przykładami
- Java String zawiera () Samouczek dotyczący metody z przykładami
- Metoda Java String compareTo z przykładami programowania
- Funkcje łańcuchowe w C ++: getline, podciąg, długość ciągu i więcej
- Funkcje konwersji ciągów w C ++: ciąg na int i int na ciąg
- Funkcje łańcuchowe w Pythonie
- Funkcje MySQL CONCAT i GROUP_CONCAT z przykładami