Sammanfattning: den här handledningen visar hur du använder MySQL INSTR-funktionen för att återställa positionen för den första förekomsten av en sträng.
introduktion till MySQL INSTR-funktionen
Ibland vill du hitta en substring i en sträng eller kontrollera om en substring finns i en sträng. I det här fallet kan du använda en sträng inbyggd funktion som heter INSTR
.
funktionen INSTR
returnerar positionen för den första förekomsten av en substring i en sträng., Om substringen inte hittas i str returnerar funktionen INSTR
noll (0).
följande visar syntaxen för funktionen INSTR
.
Code language: SQL (Structured Query Language) (sql)
prova det
funktionenINSTR
accepterar två argument:
str
är strängen som du vill söka i.substr
är den substring som du vill söka efter.
funktionenINSTR
är inte skiftlägeskänslig., Det betyder att det inte spelar någon roll om du passerar små bokstäver, versaler, titelfall etc., resultaten är alltid desamma.
om du vill att funktionenINSTR
ska utföra sökningar på skiftlägeskänsligt sätt på en icke-binär sträng använder du operatörenBINARY
för att kasta en argumentet för funktionenINSTR
från en icke-binär sträng till en binär sträng.
MySQL INSTR function examples
följande uttalande returnerar positionen för substringen MySQL iMySQL INSTR
strängen.,
Code language: SQL (Structured Query Language) (sql)
prova det
följande uttalande returnerar samma resultat eftersom funktionenINSTR
är skiftlägesinsensitiv.,
Code language: SQL (Structured Query Language) (sql)
prova det
för att tvinga INSTR
funktion för att söka baserat på skiftlägeskänsligt sätt använder du BINARY
-operatören enligt följande:
Code language: SQL (Structured Query Language) (sql)
prova det
resultatet är annorlunda eftersom MySQL vs MySQL nu med BINARY
– operatören.
INSTR-funktionen vs. LIKE operator
Vi kommer att använda tabellenproducts
I provdatabasen.,
Antag att du vill hitta en produkt vars namn innehåller nyckelordetcar
, du kan använda funktionenINSTR
enligt följande:
Code language: SQL (Structured Query Language) (sql)
prova det
Förutom funktionenINSTR
kan du användaLIKE
– operatören för att matcha mönster.,
Code language: SQL (Structured Query Language) (sql)
prova det
båda frågorna returnerar samma resultat. Så vilken är snabbare, INSTR
eller LIKE
– operatören?
svaret är att de är desamma. De är både skiftlägeskänsliga och utför fullständiga tabellskanningar.
låt oss skapa ett index i kolumnenproductname
.,
Code language: SQL (Structured Query Language) (sql)
prova
om du använderLIKE
– operatören med prefixsökningen, i den här indexerade kolumnen, kommerLIKE
– operatören att utföra snabbare än funktionenINSTR
.
se följande uttalande.,
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.,
prova det
funktionen INSTR
utför en tabellsökning även om kolumnen productname
har ett index. Detta beror på att MySQL inte kan göra något antagande om semantiken förINSTR
– funktionen, varigenom MySQL kan utnyttja sin förståelse för semantiken hosLIKE
– operatören.
det snabbaste sättet att testa om en substring finns i en sträng är att använda ett fulltextindex., Det krävs dock en konfigurera och underhålla indexet ordentligt.
i den här handledningen har du lärt dig hur du använder funktionenINSTR
för att hitta positionen för den första förekomsten av en substring i en sträng.
- var den här handledningen till hjälp?
- YesNo
Leave a Reply