mysql substring substring_index functions with examples
Erfahren Sie mehr über die Funktionen MySQL SUBSTRING und SUBSTRING_INDEX und deren Verwendung anhand mehrerer Beispiele:
Die MySQL-Teilzeichenfolgenfunktion wird verwendet, um einen Teilstring oder eine Teilzeichenfolge gegen die Eingabezeichenfolge zu extrahieren. Wie der Name schon sagt, arbeitet die Teilzeichenfolgenfunktion mit einer Zeichenfolgeneingabe und gibt eine kleinere Teilzeichenfolge für die angegebenen Optionen zurück.
Wir werden auch eine andere Variante des SUBSTRING namens SUBSTRING_INDEX kennenlernen. Diese Funktion akzeptiert Zeichen- oder Zeichenfolgenwerte als Trennzeichen und führt eine Suche nach dem angegebenen Trennzeichenwert durch.
Wir werden uns auch einige Beispiele ansehen, um zu verstehen, wie diese Funktionen beim Abfragen von Daten als Teil der SELECT-Abfragen verwendet werden können.
Was du lernen wirst:
MySQL SUBSTRING
Syntax:
// format 1 SELECT SUBSTRING('{String Value}', {start_index}, {count}); // format 2 SELECT SUBSTRING('{String Value}'FROM {start_index} for {count}); Es gibt zwei Möglichkeiten, wie wir die SUBSTRING-Funktion verwenden können.
Lassen Sie uns die Syntax verstehen, bevor wir uns mit den Beispielen befassen.
- {String Value}: Dies ist der tatsächliche String-Wert oder der Spaltenname, der den zu bearbeitenden String enthält.
- {Startindex}: start_index ist der Index von links oder rechts, an dem der Teilstring gestartet werden soll. Die Werte können positiv oder negativ sein, je nachdem, ob der String von der linken bzw. rechten Seite extrahiert werden soll. Dies wird anhand der Beispiele deutlicher.
- {Anzahl}: Dieses Feld ist optional und gibt die Anzahl der Zeichen aus dem an Startindex Feld, für das der Teilstring extrahiert werden muss. Wenn nicht erwähnt, beginnt der gesamte String mit dem Abgleich Startindex würde zurückgegeben werden.
Das Format2 ist eine Variation von Format1, außer dass es mit den Schlüsselwörtern FROM und FOR besser lesbar ist. Hier wird FROM verwendet, bevor das erwähnt wird Startindex Wert, und FOR wird verwendet, bevor das erwähnt wird Anzahl .
Sehen wir uns einige Beispiele an, um die MySQL SUBSTRING-Funktion zu verstehen.
Nehmen wir den String-Eingabewert als Hilfe zum Testen von Software
Die String-Indizes sehen wie in der folgenden Tabelle aus
| ein | zwei | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | elf | 12 | 13 | 14 | fünfzehn | 16 | 17 | 18 | 19 | zwanzig | einundzwanzig |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| S. | oder | f | t | im | zu | r | ist | T. | ist | s | t | ich | n | G | H. | ist | l | p |
MySQL SUBSTRING Beispiel
Ohne Zählung
Angenommen, wir möchten den Hilfetext aus dem obigen String extrahieren - H hat einen Index von 18
Sehen wir uns die folgende Abfrage an:
SELECT SUBSTRING('Software Testing Help', 18) as extracted_string; SELECT SUBSTRING('Software Testing Help' FROM 18) as extracted_string; // Output Help Es ist wichtig anzumerken, dass wir keinen Wert für das erwähnt haben Anzahl, Wir erhalten jedoch immer noch den richtigen String. Wenn die Zählung weggelassen wird, wird der gesamte String ausgehend vom angegebenen Index zurückgegeben.
In diesem Fall, wenn wir den Startindex erwähnen, zum Beispiel, für 'T' (Index 10)
SELECT SUBSTRING('Software Testing Help', 10) as extracted_string; //Output Testing Help Wie Sie oben sehen können, enthält die Ausgabe den gesamten Text 'Testhilfe'.
Mit Graf
Schauen wir uns nun ein Beispiel an, in dem wir die Anzahl der zurückzugebenden Zeichen erwähnen.
Angenommen, wir möchten nur das Wort 'Testing' aus der Zeichenfolge 'Software Testing Help' extrahieren. Dann können wir zählen zählen als - 7 (das ist die Länge des Wortes 'Testen')
Sehen wir uns die folgende Abfrage an:
SELECT SUBSTRING('Software Testing Help', 10, 7) as extracted_string; SELECT SUBSTRING('Software Testing Help' FROM 10 FOR 7) as extracted_string; //Output Testing Hier haben wir sowohl den Startindex als auch die Anzahl der Zeichen als Teil der Abfrage beschrieben, um das erforderliche Ergebnis zu erhalten.
Mit negativen Indexwerten
Bisher haben wir für die Beispiele, die wir gesehen haben, die spezifiziert Startindex als positiver Wert.
Wir können den start_index auch als negativ angeben, was einfach bedeutet, dass die MySQL-Engine nicht von links zählt, sondern versucht, den Startindex ab dem Ende des Strings zu zählen.
Sehen wir uns ein Beispiel an
Fügen Sie für unsere Zeichenfolge 'Hilfe zum Testen von Software' unten eine Zeile hinzu, um die richtigen Indizes zu identifizieren
| L. | ein | zwei | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | elf | 12 | 13 | 14 | fünfzehn | 16 | 17 | 18 | 19 | zwanzig | einundzwanzig |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| S. | oder | f | t | im | zu | r | ist | T. | ist | s | t | ich | n | G | H. | ist | l | p | |||
| R. | einundzwanzig | zwanzig | 19 | 18 | 17 | 16 | fünfzehn | 14 | 13 | 12 | elf | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | zwei | ein |
Die unterste Zeile hier repräsentiert also die richtigen Indizes. Angenommen, wir möchten das Wort 'Testen' mithilfe der MySQL SUBSTRING-Funktion mit dem richtigen Index extrahieren.
Der rechte Index für 'T' beim Testen ist 12 (und der linke Index ist 10).
SELECT SUBSTRING('Software Testing Help', -12, 7) as extracted_string; SELECT SUBSTRING('Software Testing Help' FROM -12 FOR 7) as extracted_string; //Output Testing Wie Sie im obigen Beispiel sehen können, führt die Erwähnung der richtigen Indizes als negativer Wert immer noch zum gleichen Ergebnis.
Index außerhalb der Grenzen
Versuchen Sie nun einige negative Szenarien
- Wenn der angegebene Startindex nicht vorhanden ist: d.h. der angegebene Index ist außerhalb der Grenzen, dann wäre die Ausgabe leer.
SELECT SUBSTRING('Software Testing Help', 30, 2) as extracted_string; //output Empty String - Wenn die angegebene Anzahl negativ ist oder mehr als die Gesamtlänge der Zeichenfolge beträgt, ist die Ausgabe nur der Rest der Zeichenfolge (beginnend mit dem angegebenen Startindex).
SELECT SUBSTRING('Software Testing Help', 5, 100) as extracted_string; //output ware Testing Help Sie können oben sehen, hier wurde die Anzahl als 100 angegeben, aber die Zeichenfolge ist nur 21 Zeichen lang.
- Versuchen wir noch ein Szenario mit der als negativ bezeichneten Anzahl.
SELECT SUBSTRING('Software Testing Help', 5, -20) as extracted_string; //output Empty String Auch hier tritt kein Fehler auf und es wird nur eine leere Zeichenfolge ausgegeben.
MySQL SUBSTRING_INDEX
Dies ist eine weitere Variante der MySQL SUBSTRING-Funktion.
Anstatt den tatsächlichen Wert von start_index zu erwähnen, können wir hier einfach das Zeichen und den Index sowie die Häufigkeit angeben, mit der das Trennzeichen durchsucht werden muss, bevor die Ausgabe zurückgegeben wird.
Ein wichtiger Punkt, den Sie hier beachten sollten, ist der SUBSTRING_INDEX
MySQL SUBSTRING INDEX-Funktion:
SUBSTRING_INDEX({StringValue/Column},delimiter,n)- {StringValue / Column}: Tatsächliche Zeichenfolgeneingabe oder der Spaltenname in der SELECT-Abfrage.
- Trennzeichen: Es ist das Zeichen oder der Teilstring, nach dem gesucht werden muss, um den verbleibenden String als Ausgabe zu extrahieren. Bei diesem Wert wird zwischen Groß- und Kleinschreibung unterschieden, daher sollte er so angegeben werden, wie er in der tatsächlichen Zeichenfolge angezeigt wird.
- n: Anzahl der Trennzeichen - d. H. Die Häufigkeit, mit der das Trennzeichen durchsucht werden soll, bevor der String zurückgegeben wird.
Lassen Sie uns dies anhand einiger Beispiele verstehen.
Wir werden für alle Beispiele, die wir im nächsten Abschnitt unten diskutieren werden, dieselbe Zeichenfolge 'Software Testing Help' wie unsere Eingabezeichenfolge verwenden.
Suche nach einem Charakter
Bei der Suche nach dem Zeichen 'T' lautet die Ausgabe 'Software'. Beachten Sie, dass der zusätzliche Platz nach dem Wort Software ebenfalls enthalten ist.
SELECT SUBSTRING_INDEX('Software Testing Help', 'T', 1) as extracted_string; //Output Software Suchen Sie nach einem Charakter, der mehrmals vorkommt. Hier ist es - 'e'
SELECT SUBSTRING_INDEX('Software Testing Help', 'e', 1) as extracted_string; //Output Softwar In diesem Beispiel: Da wir die Anzahl als 1 angegeben haben, wäre die Ausgabe String, bis das erste Auftreten von 'e' erreicht ist.
Ändern Sie die Anzahl für dasselbe Zeichen 'e' auf 2.
SELECT SUBSTRING_INDEX('Software Testing Help', 'e', 2) as extracted_string; //Output Software T Jetzt können wir sehen, dass die Teilzeichenfolge bis zum zweiten Vorkommen des Zeichens 'e' zurückgegeben wird.
Nehmen Sie ein anderes Beispiel, um zu verstehen, dass beim SUBSTRING INDEX zwischen Groß- und Kleinschreibung unterschieden wird. Versuchen wir es mit dem Buchstaben 't' anstelle von 'T'.
Welche Arten von Anwendungen testen wir?
SELECT SUBSTRING_INDEX('Software Testing Help', 't', 1) as extracted_string; //Output Sof Suche nach einem String
Wir können die SUBSTRING INDEX-Funktion zum Suchen einer Zeichenfolge anstelle eines Zeichens verwenden. Suchen wir nach dem Wort 'Testen'.
SELECT SUBSTRING_INDEX('Software Testing Help', 'Testing', 1) as extracted_string; //Output Software Suchen nach einer nicht vorhandenen Zeichenfolge
Verwenden von SUBSTRING INDEX mit einer Zeichenfolge, die nicht vorhanden ist.
SELECT SUBSTRING_INDEX('Software Testing Help', 'abc', 1) as extracted_string; //Output Software Testing Help Die Ausgabe kann hier etwas unerwartet sein. Da die MySQL Engine jedoch die erforderliche Übereinstimmung nicht finden kann, wird die gesamte Zeichenfolge als Ausgabe zurückgegeben.
Suchen nach Zeichen oder Zeichenfolgen in umgekehrter Reihenfolge
Ähnlich wie bei der SUBSTRING-Funktion ermöglicht auch die SUBSTRING INDEX-Funktion, dass die Anzahl als negative Zahlen angegeben wird. Dies bedeutet, dass die MySQL Engine nicht von links nach rechts wechselt, sondern versucht, eine Übereinstimmung von rechts nach links zu finden.
Verstehen Sie dies anhand einiger Beispiele.
SELECT SUBSTRING_INDEX('Software Testing Help', 'T', -1) as extracted_string; //Output esting Help Im obigen Beispiel sehen Sie, dass das Trennzeichen 'T' ist, während die Anzahl -1 ist. Die Ausgabe wäre also Teilzeichenfolge von rechts, bis die erste Übereinstimmung für den Buchstaben 'T' erhalten wird.
Anwendungen der MySQL SUBSTRING-Funktion
Im Allgemeinen verwenden wir die MySQL-String-Funktionen, wenn wir Daten aus einer oder mehreren Tabellen abfragen. Es kann verwendet werden, um Werte in einer Spalte aufzuteilen oder nur um die wesentlichen Werte nach Bedarf anzuzeigen.
Beispiel: Angenommen, wir haben eine Mitarbeiterdetailtabelle, die aus ID, Name und Adresse besteht.
Und die Adressspalte hat das Format - {HouseNo}, {StreetName}
Unten finden Sie das Skript zum Erstellen einer Tabelle und zum Einfügen von Dummy-Daten:
CREATE TABLE employee_details (name VARCHAR(100), address VARCHAR(100), age INT); INSERT INTO employee_details values ('Akash Malhotra', '22,Defence Colony', 24), ('Steve Wilson','12/4,Wilson Street',28), ('Monica Singh','190,Smith Lane',32); Verwenden Sie die MySQL SUBSTRING-Funktion, um die Hausnummer wie unten gezeigt aus der Adressspalte extrahiert.
SELECT name, SUBSTRING_INDEX(address,',',1) as house_no, address, age from employee_detailsAusgabe:
| Name | Straße Hausnr | Adresse | Alter |
|---|---|---|---|
| Akash Malhotra | 22 | 22, Verteidigungskolonie | 24 |
| Steve Wilson | 12/4 | 12/4, Wilson Street | 28 |
| Monica Singh | 190 | 190, Smith Lane | 32 |
In der obigen Abfrage können Sie sehen, dass wir die Funktion SUBSTRING_INDEX verwendet haben, um die Hausnummer aus der Adressspalte abzurufen, und ',' als Trennzeichen verwendet haben.
Ähnlich kann es viele Anwendungen geben, in denen wir den String extrahieren möchten, um einige aussagekräftige Informationen aus einer größeren String-Eingabe oder dem Spaltenwert abzurufen.
Häufig gestellte Fragen
F # 1) Welche MySQL-Funktion gibt die Position des ersten Auftretens eines SUBSTRING in der Zeichenfolge zurück?
Antworten: MySQL bietet zwei Funktionen zum Zurückgeben oder Extrahieren eines SUBSTRING aus einem bestimmten String- oder Spaltenwert.
- SUBSTRING
Beispiel:
SELECT SUBSTRING('Test Input',1,4) as extracted_string; // Output Test - SUBSTRING INDEX
Beispiel:
SELECT SUBSTRING_INDEX('Test Input','t',1) as extracted_string; //Output Tes F # 2) Was ist SUBSTRING_INDEX in MySQL?
Antworten: Die Funktion SUBSTRING_INDEX ist eine Variante der Funktion SUBSTRING. Während Sie in der normalen SUBSTRING-Funktion den Index als Zahl in der Eingabezeichenfolge angeben müssen, können Sie für die SUBSTRING_INDEX-Funktion entweder ein Zeichen oder einen kleineren Teilstring angeben, nach dem gesucht werden soll.
Empfohlene Lektüre = >> MySQL COUNT Tutorial
Fazit
In diesem Tutorial haben wir die Funktionen MySQL SUBSTRING und SUBSTRING_INDEX kennengelernt. Beide Funktionen extrahieren einen Teilstring gegen die angegebene Eingabezeichenfolge, arbeiten jedoch auf etwas andere Weise.
SUBSTRING erwartet den Index als die tatsächlichen Zahlen, während für SUBSTRING_INDEX das Trennzeichen als Zeichen oder Zeichenfolgenwert angegeben werden kann und die MySQL Engine dann gegen die erforderlichen übereinstimmenden Zeichenfolgen oder Zeichen extrahieren kann.
Diese beiden Funktionen werden hauptsächlich verwendet, wenn eine Spalte mit mehreren Informationen mithilfe der Zeichenfolgenextraktionslogik basierend auf den entsprechenden Anforderungen in Unterspalten extrahiert werden kann.
Literatur-Empfehlungen
- C # String Tutorial - String-Methoden mit Codebeispielen
- Java substring () -Methode - Tutorial mit Beispielen
- Java String enthält () Method Tutorial mit Beispielen
- Java String compareTo-Methode mit Programmierbeispielen
- Zeichenfolgenfunktionen In C ++: getline, Teilzeichenfolge, Zeichenfolgenlänge und mehr
- Konvertierungsfunktionen für C ++ - Zeichenfolgen: Zeichenfolge in int & int in Zeichenfolge
- Python-String-Funktionen
- MySQL CONCAT- und GROUP_CONCAT-Funktionen mit Beispielen