Możesz użyć MySQL SUBSTRING_INDEX()
funkcja zwracająca wszystko przed lub po określonym znaku (lub znakach) w ciągu.
Ta funkcja umożliwia określenie ogranicznika do użycia i możesz określić, który z nich (w przypadku, gdy w ciągu jest więcej niż jeden).
Składnia
Oto składnia:
SUBSTRING_INDEX(str,delim,count)
Gdzie str
jest ciągiem, delim
jest ogranicznikiem (od którego chcesz mieć podciąg po lewej lub prawej stronie) i count
określa, który ogranicznik (w przypadku wielu wystąpień ogranicznika w ciągu).
Pamiętaj, że ogranicznik może składać się z jednego znaku lub wielu znaków.
Przykład 1 – Zaznacz wszystko po lewej
Aby zaznaczyć wszystko przed określony znak, użyj wartości dodatniej:
SELECT SUBSTRING_INDEX('Cats,Dogs,Rabbits', ',', 2);
Wynik:
Cats,Dogs
W tym przykładzie zaznaczamy wszystko przed drugim przecinkiem. Odbywa się to za pomocą przecinka (,
) jako ogranicznik i 2
jako licznik.
Przykład 2 – zaznacz wszystko po prawej
Aby zaznaczyć wszystko po określony znak, musisz użyć wartości ujemnej:
SELECT SUBSTRING_INDEX('Cats,Dogs,Rabbits', ',', -2);
Wynik:
Dogs,Rabbits
Zauważ, że wartość ujemna oznacza, że będzie liczona od prawej, a następnie wybierz podciąg z prawej strony ogranicznika.
Co, jeśli separator nie pasuje?
Jeśli ogranicznik nie zostanie znaleziony w ciągu, ciąg jest po prostu zwracany w całości.
Przykład:
SELECT SUBSTRING_INDEX('Cats,Dogs,Rabbits', '-', 1);
Wynik:
Cats,Dogs,Rabbits
W tym przypadku cały ciąg jest zwracany w całości, ponieważ użyliśmy łącznika (-
) jako ogranicznik, ale w ciągu nie ma łączników.
Otrzymalibyśmy ten sam wynik, jeśli ciąg tak zawierają ogranicznik, ale nasz count
przekracza liczbę ograniczników w ciągu.
Przykład:
SELECT SUBSTRING_INDEX('Cats,Dogs,Rabbits', ',', 10);
Wynik:
Cats,Dogs,Rabbits
Rozróżnianie wielkości liter
SUBSTRING_INDEX()
Funkcja wykonuje wyszukiwanie ogranicznika z uwzględnieniem wielkości liter. Oznacza to, że separator musi mieć odpowiednią wielkość liter, zanim będzie pasował.
Nieprawidłowy przypadek
Oto przykład, w którym sprawa nie pasuje:
SELECT SUBSTRING_INDEX('Cats and Dogs and Rabbits', 'AND', 2);
Wynik:
Cats and Dogs and Rabbits
Otrzymujemy cały ciąg.
Właściwy przypadek
Oto ten sam przykład, ale gdzie przypadek pasuje:
SELECT SUBSTRING_INDEX('Cats and Dogs and Rabbits', 'and', 2);
Wynik:
Cats and Dogs