Можете да използвате MySQL SUBSTRING_INDEX()
функция за връщане на всичко преди или след определен знак (или знаци) в низ.
Тази функция ви позволява да посочите разделителя, който да използвате, и можете да посочите кой (в случай, че има повече от един в низа).
Синтаксис
Ето синтаксиса:
SUBSTRING_INDEX(str,delim,count)
Където str
е низът, delim
е разделителят (от който искате подниз отляво или отдясно) и count
указва кой разделител (в случай, че има множество срещания на разделителя в низа).
Имайте предвид, че разделителят може да бъде един или няколко знака.
Пример 1 – Изберете Всичко вляво
За да изберете всичко преди определен знак, използвайте положителна стойност:
SELECT SUBSTRING_INDEX('Cats,Dogs,Rabbits', ',', 2);
Резултат:
Cats,Dogs
В този пример избираме всичко преди втората запетая. Това се прави чрез използване на запетая (,
) като разделител и 2
като броят.
Пример 2 – Изберете Всичко вдясно
За да изберете всичко след определен знак, трябва да използвате отрицателна стойност:
SELECT SUBSTRING_INDEX('Cats,Dogs,Rabbits', ',', -2);
Резултат:
Dogs,Rabbits
Имайте предвид, че отрицателната стойност означава, че ще се брои отдясно, след което изберете подниз отдясно на разделителя.
Ами ако разделителят не съвпада?
Ако разделителят не е намерен в низа, низът просто се връща изцяло.
Пример:
SELECT SUBSTRING_INDEX('Cats,Dogs,Rabbits', '-', 1);
Резултат:
Cats,Dogs,Rabbits
В този случай целият низ се връща изцяло, защото използвахме тире (-
) като разделител, но в низа нямаше тирета.
Ще получим същия резултат, ако низът прави съдържа разделителя, но нашия count
надвишава броя на разделителите в низа.
Пример:
SELECT SUBSTRING_INDEX('Cats,Dogs,Rabbits', ',', 10);
Резултат:
Cats,Dogs,Rabbits
Чувствителност на главни и малки букви
SUBSTRING_INDEX()
функцията извършва чувствително търсене на разделителя. Това означава, че разделителят трябва да е с правилния регистър, преди да съвпадне.
Неправилен регистър
Ето пример, когато случаят не съвпада:
SELECT SUBSTRING_INDEX('Cats and Dogs and Rabbits', 'AND', 2);
Резултат:
Cats and Dogs and Rabbits
Получаваме целия низ изцяло.
Правилен случай
Сега ето същия пример, но където случаят съвпада:
SELECT SUBSTRING_INDEX('Cats and Dogs and Rabbits', 'and', 2);
Резултат:
Cats and Dogs