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