23rd Jun 2022 6 Leseminuten 5 SQL-Funktionen zur Manipulation von Strings Marek Pankowski SQL-Textfunktionen Inhaltsverzeichnis SQL-String-Funktionen: CONCAT SQL-String-Funktionen: REPLACE SQL-String-Funktionen: SUBSTR SQL-String-Funktionen: ASCII und CHR SQL String-Funktionen: TRIM Schlussfolgerung Die SQL-Funktionen zur Bearbeitung von Zeichenketten, auch String-Funktionen genannt, gehören zu den wichtigsten Werkzeugen von SQL. In diesem Beitrag werden wir uns fünf Möglichkeiten ansehen, wie Sie verschiedene Operationen mit Strings durchführen können. Es gibt viele SQL-Funktionen, mit denen Sie String-Daten "bearbeiten" können. Wenn Sie SQL lernen, werden Sie sehen, wie nützlich sie sind. Einige SQL-Funktionen schneiden überflüssige Leerzeichen oder Zeichen ab; andere sagen Ihnen, wie lang eine Zeichenfolge ist. Mit diesen Funktionen haben Sie viele Möglichkeiten, Zeichenketten umzuwandeln und zu bearbeiten, was Ihren Code effektiver macht. Außerdem machen sie den Code leichter verständlich. Jeder SQL-Entwickler sollte wissen, welche SQL-Funktionen für die Bearbeitung von Strings verwendet werden. In diesem Beitrag werde ich Ihnen den Einstieg erleichtern, indem ich fünf gängige String-Funktionen in SQLerkläre. SQL-String-Funktionen: CONCAT CONCAT(first_char, second_char, ... n_char) Die SQL-Stringfunktion CONCAT fasst zwei oder mehr Strings zu einem String zusammen. Alle Eingaben von entry_charmüssen die Datentypen CHAR, VARCHAR oder NCHAR haben. Ich habe zwei einfache Beispiele geschrieben, die zeigen, wie nützlich dieser Befehl ist: SELECT CONCAT ('LearnSQL is good', ' and great', ' and fantastic!') FROM DUAL; -------------------- LearnSQL is good and great and fantastic! Wie Sie sehen, hat CONCAT die drei von mir eingegebenen Zeichenfolgen - 1) 'LearnSQL is good'; 2) 'and great'; 3) 'and fantastic!' - zu einer neuen SQL-Zeichenfolgekombiniert. Diese Technik ist sehr nützlich, wenn wir Datenbankinformationen in einer lesbaren Form darstellen wollen. Nehmen wir an, wir haben eine Tabelle mit dem Namen patient, in der die ID-Nummern, Namen, Aufnahmedaten und Krankheiten der Patienten gespeichert sind. Wir möchten die Daten der einzelnen Patienten so verständlich wie möglich darstellen. Die beste Möglichkeit ist, einen Satz zu erstellen, wie unten gezeigt: SELECT CONCAT(name, ' was admitted to St. Ann's Hospital on ', date, ' with ', illness) FROM patient WHERE patient_id = 447; ------------------ John Doe was admitted to St. Ann’s Hospital on 21-11-2016 with flu. In vielen Datenbanksystemen kann die SQL-Stringfunktion CONCAT durch das Symbol für die Verkettung von Strings "||" ersetzt werden. Dieser Operator ist mit den SQL-Standards kompatibel, funktioniert aber nicht in jeder Datenbank - in SQL Server müssen Sie z. B. "+" verwenden. SQL-String-Funktionen: REPLACE REPLACE(entry_char, string_searching, string_replace) <p>Eine weitere Möglichkeit zur Manipulation von Zeichenketten in SQL ist REPLACE. Mit dieser Funktion können Sie selektiv Daten innerhalb einer SQL-Zeichenkette ersetzen oder entfernen. Sie gibt eine eintrag_char zurück, wobei der Wert von string_searching ersetzt wird durch string_replace. Wenn der string_replace Wert null ist, wird jeder Wert, der mit string_searching aus der Eingabezeichenkette gelöscht. Sehen wir uns zwei Beispiele für die Arbeit von REPLACE an. Angenommen, wir wollen einen Teil eines Datensatzes aktualisieren: SELECT REPLACE ('LearnSQL is good!', 'good', 'great!') FROM DUAL; --------------------- LearnSQL is great! Wie Sie sehen können, hat REPLACE den Wert good in LearnSQL is good!” to “great geändert. Der Datensatz lautet nun LearnSQL is great! Lassen Sie uns nun eine praktischere Demonstration der Manipulation von Zeichenketten mit dieser Funktion versuchen. Nehmen wir an, Sie haben eine Tabelle namens registry die Namen von Angestellten speichert. Eine Mitarbeiterin namens Jannet (die einzige Jannet in der Tabelle, für die Zwecke dieser Illustration) hat geheiratet und ihren Nachnamen geändert. Mit der Funktion REPLACE können wir ihren Datensatz ganz einfach aktualisieren: UPDATE registry SET name = REPLACE(name, 'Kowalski', 'Novak') WHERE name LIKE 'Jannet%' Jannet Kowalski ist jetzt offiziell Jannet Novak, dank der Funktion REPLACE. SQL-String-Funktionen: SUBSTR Es gibt noch mehr SQL-Funktionen, die zur Bearbeitung von Zeichenketten verwendet werden. SUBSTR(char, position, length) SUBSTR nimmt einen Teil (oder eine Teilzeichenkette) aus einer SQL-Zeichenkette und gibt ihn zurück. Zeichen definiert, was wir als Quelle der Teilzeichenkette verwenden wollen; im folgenden Beispiel ist es LearnSQL. Die Stelle gibt an, wo die Teilzeichenkette beginnt; in diesem Fall sind es 6 Zeichen vom Anfang an. Die Länge schließlich bestimmt, wie lang die Teilzeichenkette sein soll. Setzt man das alles zusammen, erhält man: SELECT SUBSTR('LearnSQL',6,3) FROM DUAL; ------------------- SQL Diese SQL-String-Funktion wird häufig zum Entfernen von Zeichen aus einer großen Zeichenkette und zum Hinzufügen von Zeichen zu einer Zeichenkette verwendet. Nehmen wir an, Sie haben eine Tabelle namens products die eine Produktliste enthält. Die Produkt-ID besteht aus Buchstaben, die den Produkttyp bezeichnen, und Zahlen, die die vorhandene Menge angeben. id ---------- AA91 AA55 BG66 WP21 Nehmen wir nun an, Sie möchten einen Unterstrich zwischen den Buchstaben und Zahlen in der Produkt-ID hinzufügen. Mit CONCAT und SUBSTR ist das ganz einfach: UPDATE products SET id = CONCAT(SUBSTR(id, 1, 2), '_', SUBSTR(id, 3); id ---------- AA_91 AA_55 BG_66 WP_21 Schauen wir uns diese Befehle an. UPDATE ändert die products Tabelle. CONCAT verbindet die Teile der Zeichenkette, die von zwei Funktionen SUBSTR erstellt wurden. Beachten Sie, dass die zweite SUBSTR keinen dritten Parameter hat - sie schließt alle Zeichen ein, die sich nach der im zweiten Parameter angegebenen Position befinden. Denken Sie daran, dass nicht alle Datenbanksysteme denselben Namen für die SQL-Server-Stringfunktionen verwenden. In SQL Server heißt die Funktion SUBSTR SUBSTRING , aber es gilt die gleiche Syntax. Klicken Sie hier, um mehr über SQL Server zu erfahren. SQL-String-Funktionen: ASCII und CHR ASCII(single_character) CHR(character_code) ASCII und CHR sind zwei völlig gegensätzliche SQL-Funktionen. ASCII betrachtet ein einzelnes Zeichen und gibt dessen ASCII-Zahlencode zurück (z. B. "V" ist 86). Wenn eine Zeichenkette eingegeben wird, gibt diese SQL-String-Funktion einen Wert für das erste Zeichen zurück und ignoriert den Rest. CHR hingegen nimmt die ASCII-Code-Nummer und gibt das entsprechende Zeichen zurück. Geben Sie eine 86 ein, und es wird ein "V" zurückgegeben. Nehmen wir an, Sie müssen alle Personen finden, deren Nachname mit einem A beginnt. Suchen wir zunächst das ASCII-Äquivalent von "A". SELECT ASCII('A') FROM DUAL; ------------------- 65 65 ist also unsere Nummer. Jetzt können wir alle benötigten Datensätze finden: SELECT * FROM workers WHERE SUBSTR(second_name, 1, 1) = CHR(65); first_name second_name age --------- ------------ ------ Garry Amundsen 41 Adam Anderson 55 Elizabeth Alanfry 33 SQL String-Funktionen: TRIM TRIM( [ [ LEADING | TRAILING | BOTH ] character FROM ] edit_char ) TRIMDie Hauptaufgabe von SUBSTR ist das Entfernen aller angegebenen Zeichen aus dem Anfangsteil (führende), dem Endteil (nachgestellte) oder beiden Teilen (beide) einer bestimmten Zeichenkette (edit_char). Diese Anweisung hat eine Reihe von Parametern. Zunächst müssen Sie den Teil der Zeichenkette auswählen, an dem Sie Zeichen abschneiden wollen. Wenn Sie das nicht tun, entfernt TRIM die definierten Zeichen sowohl am Anfang als auch am Ende von edit_char. Als nächstes müssen Sie angeben, was Zeichen entfernt werden soll. Wenn Sie diesen Parameter weglassen, entfernt die Funktion nur Leerzeichen. Schließlich definieren Sie die Zeichenkette. Schauen wir uns an, wie es in der Praxis aussieht: Entfernen Sie führende und nachgestellte Leerzeichen: SELECT TRIM(' SQL2017 ') FROM DUAL; ------------------ “SQL2017” SELECT TRIM ('' FROM ' SQL2017 ') FROM DUAL; ------------------ "SQL2017" Entfernen Sie das nachgestellte '2017' aus der Zeichenfolge: SELECT TRIM (TRAILING '2017' FROM 'SQL2017') FROM DUAL; ------------------ "SQL" Entfernen Sie sowohl führende als auch nachgestellte '20' aus der Zeichenkette: SELECT TRIM (BOTH '20' FROM '2017LearnSQL20') FROM DUAL; ------------------ "17LearnSQL" Leider hat TRIM nicht für alle Datenbanken die gleiche Syntax. In SQL Server nimmt TRIM nur den edit_char Parameter und löscht alle Leerzeichen an beiden Enden der Zeichenkette. LTRIM löscht führende Leerzeichen und RTRIM löscht nachfolgende Leerzeichen. Schlussfolgerung Es gibt viele SQL-Funktionen, mit denen wir Strings manipulieren können. Was wir in diesem Beitrag besprochen haben, ist nur ein kleiner Bruchteil dessen, was SQL-Funktionen tun können. Um SQL-Stringfunktionen im Detail zu lernen, besuchen Sie unseren Online-Kurs LearnSQL.de's Standard-SQL-Funktionen. Tags: SQL-Textfunktionen