Dieser Artikel vermittelt Ihnen relevante Informationen zum Zusammenführen und Aufteilen von Zeichenfolgen in der SQL-Fallstudie. Der Artikel stellt Ihnen das Erlernen oder die Verwendung von Oracle vor Bestimmte Referenz-Lernwerte, Freunde in Not können sich darauf beziehen.
Empfohlenes Lernen: „
SQL-TutorialEs gibt möglicherweise mehrere Implementierungsmethoden in Oracle. Derzeit sind mir zwei bekannt, die unter „Implementierung“ aufgeführt sind von diesen beiden:
Methode zum Zusammenführen von Zeichenfolgen eins:
Implementierung von SQL:--方法一
SELECT d.dept_name,wm_concat(e.emp_name) FROM employee e
INNER JOIN department d ON d.dept_id=e.dept_id
GROUP BY d.dept_name;
SQL-Analyse:
Verwenden Sie Oracles eigene. wm _concat() Funktion Es gibt einen Nachteil Beim Zusammenführen von Zeichenfolgen kann das Verbindungssymbol zum Zusammenführen nur das Standardkomma sein und es können keine anderen Symbole verwendet werden.
String-Zusammenführungsmethode zwei:
SQL implementieren:--方法二
SELECT d.dept_name,
LISTAGG (e.emp_name, ',') WITHIN GROUP (ORDER BY e.emp_name) names
FROM employee e
INNER JOIN department d ON d.dept_id=e.dept_id
GROUP BY d.dept_name;
SQL-Analyse:
Verwenden Sie Oracles eigene LISTAGG()-Funktion zum Zusammenführen Der Vorteil ist, dass die Das zusammengeführte Verbindungssymbol kann als beliebiges Zeichen angegeben werden, und die Sortierung ORDER BY kann einfach implementiert werden.
String-Splitting
Derzeit sind mir zwei Implementierungsmethoden bekannt:String-Splitting-Methode 1:
Implementieren SQL:--方法一 WITH t (id, name, sub, str) AS ( SELECT id, name, substr(class, 1, instr(class, '、')-1), substr(concat(class,'、'), instr(class, '、')+1) FROM movies UNION ALL SELECT id, name,substr(str, 1, instr(str, '、')-1), substr(str, instr(str, '、')+1) FROM t WHERE instr(str, '、')>0 ) SELECT id, name, sub FROM t ORDER BY id;
Ausführungsergebnis:
SQL-Analyse:
Diese Aussage ist etwas kompliziert. Hier eine Schritt-für-Schritt-Erklärung: Schauen Sie sich zunächst das Original der Filme an Tabellendaten:
1 Der erste Schritt besteht darin, den Wert des Klassenfelds zunächst entsprechend dem Trennzeichen (hier ist das Komma) in zwei Teile aufzuteilen. Der erste Teil ist der erste Wert des zu teilenden Klassenfelds und der zweite Teil ist der Wert der verbleibenden Teile des zu teilenden Klassenfelds. 2. Der zweite Schritt verwendet den WITH-Ausdruck, um die rekursive Abfrage zu implementieren, und führt eine Schleife durch, um den nicht geteilten Wert (den zweiten Teil) gemäß dem Trennzeichen (hier ist das Komma) aufzuteilen das letzte Trennzeichen des Feldes und die Daten am Ende der Rekursion werden in der temporären Tabelle t abgelegt. 3. Der dritte Schritt ist eine einfache Abfrage, um die Datensätze aus der temporären Tabelle t im zweiten Schritt abzufragen und zu sortieren. String-Splitting-Methode zwei: Implementierung von SQL:--方法二 SELECT m.name,t.column_value FROM movies m,TABLE(SPLIT(m.class,'、')) t;
Ausführungsergebnis:
SQL-Analyse:
Diese. Methode Dies geschieht tatsächlich durch Anpassen einer Funktion (Funktion). Die Logik der Funktionsaufteilung ähnelt tatsächlich der Logik von Methode 1. Beide verwenden die Rekursion, um die Werte in der Zeichenfolge einzeln gemäß dem Trennzeichen aufzuteilen und schließlich die geteilte Zeichenfolge zurückzugeben. Persönlich bin ich der Meinung, dass diese Methode besser ist, weil sie die Aufteilungslogik kapselt, wodurch sie einfacher zu verwenden und klarer in der Logik ist. Das Folgende ist das Erstellungsskript der Split-Funktion:
create or replace function split (p_list clob, p_sep varchar2 := ',') return tabletype pipelined is l_idx pls_integer; v_list varchar2 (32676) := to_char(p_list); begin loop l_idx := instr (v_list, p_sep); if l_idx > 0 then pipe row (substr (v_list, 1, l_idx - 1)); v_list := substr (v_list, l_idx + length (p_sep)); else pipe row (v_list); exit; end if; end loop; end;
Der Rückgabewerttyp der Funktion, tabletype, ist ebenfalls ein benutzerdefinierter Typ.
Das Folgende ist das Erstellungsskript dieses Typs:
create or replace type tabletype as table of varchar2(32676);
Empfohlenes Lernen: „
SQL-Tutorial“
Das obige ist der detaillierte Inhalt vonSQL-Fallstudie: Strings zusammenführen und aufteilen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!