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

3 sposoby na znalezienie pozycji podciągu w ciągu w MySQL

MySQL ma wiele funkcji łańcuchowych, które zwracają pozycję podciągu w łańcuchu. Dokładniej, zwracają pozycję pierwszego wystąpienia w ciągu (lub pierwszego wystąpienia po danym punkcie początkowym).

Funkcje, o których mówię, są następujące:

  • INSTR()
  • LOCATE()
  • POSITION()

Poniżej znajduje się przegląd każdego z nich.

INSTR()

INSTR() funkcja zwraca pierwsze wystąpienie podciągu w ciągu.

Oto składnia:

INSTR(str,substr)

Gdzie str to ciąg, który chcesz przeszukać, a substr to podciąg, którego szukasz.

Przykład

SELECT INSTR('Cats and dogs like to run', 'dogs') AS Result;

Wynik:

+--------+
| Result |
+--------+
|     10 |
+--------+

W tym przypadku ciąg dogs zaczyna się od pozycji 10.

Jeśli podciąg nie zostanie znaleziony, wynik 0 jest zwracany:

SELECT INSTR('Cats and dogs like to run', 'rabbit') AS Result;

Wynik:

+--------+
| Result |
+--------+
|      0 |
+--------+

LOKALIZUJ()

LOCATE() funkcja działa w podobny sposób, z wyjątkiem kilku różnic; argumenty są w innej kolejności i możesz podać opcjonalny trzeci parametr, aby wskazać, gdzie rozpocząć wyszukiwanie.

Dlatego możesz go używać na jeden z następujących sposobów:

LOCATE(substr,str)
LOCATE(substr,str,pos)

Pierwsza składnia jest podobna do INTSR() składnia, z wyjątkiem tego, że str i substr są zamieniane.

Druga składnia dodaje opcjonalny pos argument, który pozwala określić pozycję do rozpoczęcia wyszukiwania.

Przykład pierwszej składni

Oto przykład z użyciem pierwszej składni:

SELECT LOCATE('dogs', 'Cats and dogs like to run') AS Result;

Wynik:

+--------+
| Result |
+--------+
|     10 |
+--------+

Przykład drugiej składni

Oto przykład, w którym określamy pozycję początkową, aby rozpocząć wyszukiwanie:

SELECT LOCATE('cat', 'Cats, cats, and more cats!', 6) AS Result;

Wynik:

+--------+
| Result |
+--------+
|      7 |
+--------+

Widzimy, że ciąg cat można znaleźć na pozycji 1, ale określiliśmy 6 jako pozycja wyjściowa. Dlatego pozycja następnego wystąpienia tego ciągu była tą, która została zwrócona.

Podobnie jak w przypadku INSTR() funkcja, jeśli podciąg nie zostanie znaleziony, 0 jest zwracany.

POZYCJA()

POSITION() funkcja jest synonimem LOCATE() , ale z nieco inną składnią.

Oto składnia:

POSITION(substr IN str)

To jest synonim:

LOCATE(substr,str)

Możemy więc przepisać jeden z poprzednich przykładów w następujący sposób:

SELECT POSITION('dogs' IN 'Cats and dogs like to run') AS Result;

Wynik:

+--------+
| Result |
+--------+
|     10 |
+--------+


  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 'Order By' - poprawne sortowanie znaków alfanumerycznych

  2. Przyczyny błędu MySQL 2014 Nie można wykonać zapytań, gdy inne niebuforowane zapytania są aktywne

  3. Jak monitorować metryki HAProxy za pomocą ClusterControl

  4. Jaki jest odpowiednik LEN() w MySQL?

  5. Ograniczniki w MySQL