podsumowanie: ten samouczek pokazuje, jak użyć funkcji MySQL INSTR, aby zwrócić pozycję pierwszego wystąpienia ciągu znaków.
Wprowadzenie do funkcji MySQL INSTR
czasami chcesz zlokalizować podłańcuch w łańcuchu lub sprawdzić, czy podłańcuch istnieje w łańcuchu. W tym przypadku możesz użyć wbudowanej funkcji o nazwie INSTR
.
funkcjaINSTR
Zwraca pozycję pierwszego wystąpienia fragmentu łańcucha., Jeśli podłańcuch nie zostanie znaleziony w str, funkcja INSTR
zwraca zero (0).
poniżej przedstawiono składnię funkcji INSTR
.
Code language: SQL (Structured Query Language) (sql)
Wypróbuj
INSTR
funkcja przyjmuje dwa argumenty:
str
jest ciągiem znaków, w którym chcesz wyszukać.substr
jest podłańcuchem, którego chcesz szukać.
funkcjaINSTR
nie uwzględnia wielkości liter., Oznacza to, że nie ma znaczenia, czy przekazujesz Małe, Wielkie, wielkie litery, itp., wyniki są zawsze takie same.
Jeśli chcesz, aby funkcjaINSTR
wykonywała wyszukiwania w sposób uwzględniający wielkość liter na nietargowym łańcuchu, użyj operatoraBINARY
, aby oddać jeden argument funkcjiINSTR
z nietargowego łańcucha do binarnego łańcucha.
przykłady funkcji MySQL INSTR
następujące polecenie zwraca pozycję fragmentu MySQL w ciągu MySQL INSTR
.,
Code language: SQL (Structured Query Language) (sql)
Wypróbuj
poniższe polecenie zwraca ten sam wynik, ponieważ INSTR
funkcja nie rozróżnia wielkości liter.,
Code language: SQL (Structured Query Language) (sql)
Wypróbuj
aby wymusić INSTR
funkcja wyszukiwania w oparciu o rozróżnianie wielkości liter, użyj operatora BINARY
w następujący sposób:
Code language: SQL (Structured Query Language) (sql)
wypróbuj
wynik jest inny, ponieważ MySQL vs.MySQL teraz z operatorem BINARY
.
funkcja INSTR vs.like operator
użyjemy tabeliproducts
w przykładowej bazie danych.,
Załóżmy, że chcesz znaleźć produkt, którego nazwa zawiera słowo kluczowe car
, możesz użyć INSTR
funkcja w następujący sposób:
Code language: SQL (Structured Query Language) (sql)
wypróbuj ją
oprócz funkcja INSTR
, możesz użyć operatora LIKE
, aby dopasować wzór Car
.,
Code language: SQL (Structured Query Language) (sql)
Wypróbuj
oba zapytania zwracają ten sam wynik. Więc który z nich jest szybszy,INSTR
czyLIKE
operator?
odpowiedź jest taka, że są takie same. Są one zarówno uwzględniające wielkość liter, jak i wykonujące Pełne skanowanie tabeli.
stwórzmy indeks na kolumnie productname
.,
Code language: SQL (Structured Query Language) (sql)
wypróbuj to
Jeśli użyjesz LIKE
operator z wyszukiwaniem prefiksów, w tej zindeksowanej kolumnie, LIKE
operator będzie działał szybciej niż INSTR
function.
patrz poniższe stwierdzenie.,
Code language: SQL (Structured Query Language) (sql)
Try It Out
You can check it using the EXPLAIN
statement:
Code language: SQL (Structured Query Language) (sql)
Try It Out
And compare with the following statement that uses the INSTR
function.,
Wypróbuj
INSTR
funkcja wykonuje skanowanie tabeli, nawet jeśli productname
Dzieje się tak dlatego, że MySQL nie może zakładać semantyki funkcji INSTR
, dzięki czemu MySQL może wykorzystać swoje zrozumienie semantyki operatora LIKE
.
najszybszym sposobem sprawdzenia, czy fragment tekstu istnieje w łańcuchu jest użycie pełnotekstowego indeksu., Wymagane jest jednak prawidłowe skonfigurowanie i utrzymanie indeksu.
w tym samouczku nauczyłeś się używać funkcji INSTR
, aby znaleźć pozycję pierwszego wystąpienia podłańcucha w łańcuchu.
- czy ten tutorial był pomocny?
- YesNo
Leave a Reply