W MySQL POSITION()
funkcja zwraca pozycję pierwszego wystąpienia podciągu w ciągu.
Ta funkcja jest właściwie synonimem LOCATE()
, ale z nieco inną składnią. LOCATE()
funkcja ma również dodatkową funkcjonalność, ponieważ pozwala zdefiniować pozycję początkową wyszukiwania.
Składnia
Podstawowa składnia wygląda następująco:
POSITION(substr IN str)
Gdzie substr
jest podciągiem i str
jest ciągiem.
Przykład 1 – Podstawowe użycie
SELECT POSITION('Cat' IN 'The Cat') Result;
Wynik:
+--------+ | Result | +--------+ | 5 | +--------+
Przykład 2 – Rozróżnianie wielkości liter
POSITION()
Funkcja jest bezpieczna dla wielu bajtów i rozróżnia wielkość liter tylko wtedy, gdy co najmniej jeden argument jest ciągiem binarnym.
W poniższym przykładzie nie jest rozróżniana wielkość liter:
SELECT POSITION('Cat' IN 'The Cat') Result;
Wynik:
+--------+ | Result | +--------+ | 5 | +--------+
Przykład 3 – Brak dopasowania
Funkcja zwraca 0
jeśli podciąg nie zostanie znaleziony w ciągu:
SELECT POSITION('Dog' IN 'The cat') Result;
Wynik:
+--------+ | Result | +--------+ | 0 | +--------+
Przykład 4 – osadzone podciągi
Zachowaj ostrożność przy wyborze podciągu. Jeśli jest to część innego słowa, możesz otrzymać fałszywy alarm:
SELECT POSITION('Cat' IN 'Good Catch!') Result;
Wynik:
+--------+ | Result | +--------+ | 6 | +--------+
Jeśli szukasz tylko kota , zwierzę, byłby to fałszywie pozytywny wynik.
Przykład 5 – Tylko pierwsze wystąpienie
Pamiętaj, ta funkcja zwraca tylko pozycję pierwszego wystąpienie podciągu. Wszelkie kolejne wystąpienia są ignorowane:
SELECT POSITION('Cat' IN 'My cat is bigger than your cat') Result;
Wynik:
+--------+ | Result | +--------+ | 4 | +--------+
Przykład 6 – Argumenty NULL
Jeśli którykolwiek z argumentów jest NULL
, wynik to NULL
:
SELECT POSITION('Cat' IN NULL) 'Result 1', POSITION(NULL IN 'The Cat') 'Result 2';
Wynik:
+----------+----------+ | Result 1 | Result 2 | +----------+----------+ | NULL | NULL | +----------+----------+
Jak wspomniano, możesz również użyć funkcji LOCATE()
funkcja, która pozwala określić pozycję początkową wyszukiwania.