Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak wybrać wszystko przed/po określonym znaku w MySQL — SUBSTRING_INDEX()

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak całkowicie usunąć MySQL z Ubuntu?

  2. JDBC zwraca wyjątek MySQLSyntaxError z poprawną instrukcją

  3. Mysql, aby wybrać rekord miesięczny, nawet jeśli dane nie istnieją

  4. Uprawnienia użytkownika MySQL

  5. SQL SERVER – Jedna sztuczka do obsługi dynamicznego SQL, aby uniknąć ataku SQL Injection?