Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да изберете всичко преди/след определен символ в MySQL – SUBSTRING_INDEX()

Можете да използвате 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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да се свържете с MySQL с помощта на Perl

  2. Как да решим проблема с кодирането на символи в MySQL?

  3. Как да синхронизирам повторно Mysql DB, ако главен и подчинен имат различен корпус на база данни на Mysql репликация?

  4. Как да добавя функция levenshtein в mysql?

  5. Как най-добре да съхранявате потребителска информация и потребителско име и парола