String in MySQL teilen
In MySQL gibt es keine integrierte Funktion, die der PHP-Funktion explosion() ähnelt, um Zeichenfolgen aufzuteilen. Mit ein wenig Einfallsreichtum lässt sich jedoch ein ähnlicher Effekt erzielen.
Erstellen Sie eine benutzerdefinierte Explosionsfunktion
Um eine benutzerdefinierte Explosionsfunktion zu erstellen, können Sie die folgende Syntax verwenden:
<code class="language-sql">CREATE FUNCTION SPLIT_STRING(str VARCHAR(255), delim VARCHAR(12), pos INT) RETURNS VARCHAR(255) RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(str, delim, pos), CHAR_LENGTH(SUBSTRING_INDEX(str, delim, pos-1)) + 1), delim, '');</code>
Diese Funktion akzeptiert drei Parameter: die zu teilende Zeichenfolge (str), das Trennzeichen (delim) und die Anzahl der zurückzugebenden Vorkommen (pos).
Nutzung
Um eine benutzerdefinierte Explosionsfunktion zu verwenden, rufen Sie sie wie folgt auf:
<code class="language-sql">SELECT SPLIT_STRING('apple, pear, melon', ',', 1);</code>
Diese Abfrage gibt „apple“ als erstes Vorkommen einer durch Kommas getrennten Zeichenfolge zurück.
Beispielanwendungsfall
In Ihrem speziellen Anwendungsfall möchten Sie nach Sportergebnissen suchen, die gleich, aber in umgekehrter Reihenfolge in verschiedenen Datenbankeinträgen sind. Sie können eine benutzerdefinierte Explosionsfunktion verwenden, um den Bruch in einzelne Zahlen aufzuteilen und zu vergleichen:
<code class="language-sql">WHERE opponent1.date = opponent2.date AND SPLIT_STRING(opponent1.score, '-', 1) = SPLIT_STRING(opponent2.score, '-', 2) AND SPLIT_STRING(opponent1.score, '-', 2) = SPLIT_STRING(opponent2.score, '-', 1)</code>
Diese Abfrage gibt Übereinstimmungsdatensätze mit derselben Punktzahl, jedoch in umgekehrter Reihenfolge, zurück.
Das obige ist der detaillierte Inhalt vonWie simuliere ich die Funktion explosion() von PHP in MySQL, um Strings aufzuteilen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!