Shrnutí: tento tutoriál vám ukáže, jak používat MySQL funkce INSTR vrátí pozici prvního výskytu řetězce.
Úvod do funkce INSTR MySQL
někdy chcete najít podřetězec v řetězci nebo zkontrolovat, zda v řetězci existuje podřetězec. V tomto případě můžete použít vestavěnou funkci řetězce nazvanou INSTR
.
INSTR
vrací pozici prvního výskytu podřetězce v řetězci., Pokud se podřetězec nenachází ve str, funkceINSTR
vrátí nulu (0).
následující ilustruje syntaxiINSTR
funkce.
Code language: SQL (Structured Query Language) (sql)
Vyzkoušet
INSTR
funkce přijímá dva argumenty:
str
je řetězec, který chcete hledat.substr
je podřetězec, který chcete hledat.
funkceINSTR
není malá a velká písmena., To znamená, že nezáleží na tom, zda předáte malá, velká písmena, titulní případ atd., výsledky jsou vždy stejné.
Pokud chcete INSTR
funkce pro vyhledávání v case-sensitive způsobem na non-binární řetězec, můžete použít BINARY
operátor vrhá jeden argument INSTR
funkce z non-binární řetězec binární řetězec.
příklady funkcí INSTR MySQL
následující příkaz vrací pozici substrátu MySQL v řetězci MySQL INSTR
.,
Code language: SQL (Structured Query Language) (sql)
Vyzkoušet
následující prohlášení, vrátí stejný výsledek, protože INSTR
funkce je case-insensitive.,
Code language: SQL (Structured Query Language) (sql)
Vyzkoušet
síla INSTR
funkci vyhledávání na základě případ-citlivé módní, můžete použít BINARY
operátor takto:
Code language: SQL (Structured Query Language) (sql)
Vyzkoušet
výsledek je jiný, protože mysql vs. MySQL nyní s BINARY
operátor.
funkce INSTR vs. like operator
použijeme tabulku products
ve vzorové databázi.,
Předpokládejme, že chcete najít výrobek, jehož název obsahuje car
klíčové slovo, můžete použít INSTR
funkce následovně:
Code language: SQL (Structured Query Language) (sql)
Vyzkoušet
Vedle INSTR
funkce, můžete použít LIKE
obsluhy, aby odpovídaly Car
vzor.,
Code language: SQL (Structured Query Language) (sql)
Vyzkoušejte to
oba dotazy vrátí stejný výsledek. Takže který z nich je rychlejší,INSTR
neboLIKE
operátor?
odpověď je, že jsou stejné. Oba jsou citlivé na malá a provádějí úplné skenování tabulky.
vytvoříme index ve sloupci productname
.,
Code language: SQL (Structured Query Language) (sql)
Vyzkoušet
Pokud použijete LIKE
operátor s předponou hledat, na to indexovaný sloupec, LIKE
provozovatel bude provádět rychleji než INSTR
funkce.
viz následující příkaz.,
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.,
Vyzkoušet
INSTR
funkce provede prohledání tabulky, i když productname
sloupec má index. Je to proto, že MySQL nemůže učinit předpoklad o sémantice INSTR
funkce, kdy MySQL může využít jeho chápání sémantiky LIKE
operátor.
nejrychlejší způsob, jak otestovat, zda v řetězci existuje podřetězec, je použít fulltextový index., Nicméně, to je nutné konfigurovat a udržovat index správně.
V tomto kurzu jste se naučili, jak používat INSTR
funkce najít pozici prvního výskytu podřetězce v řetězci.
- byl tento tutoriál užitečný?
- YesNo
Leave a Reply