Lernpfad
Bei der Arbeit mit relationalen Datenbanken müssen wir oft mit unordentlichen Daten umgehen. Eine der häufigsten Herausforderungen ist die Reinigung und Verarbeitung von Textdaten. Zum Glück gibt es in SQL leistungsstarke String-Funktionen, die diesen Prozess viel effizienter machen und dir Zeit und Mühe sparen.
In diesem Artikel stellen wir dir die wichtigsten SQL-String-Funktionen vor, mit denen du Textdaten ganz einfach bereinigen und manipulieren kannst. Lass uns loslegen!
Was sind SQL String-Funktionen?
SQL-String-Funktionen sind integrierte Funktionen, mit denen wir in einer Datenbank gespeicherte Textdaten manipulieren und verarbeiten können. Übliche Beispiele für Textfelder sind Namen, Beschreibungen und Adressen.
Mit diesen Funktionen kannst du eine Vielzahl von Aufgaben erledigen, z. B:
- Zeichenketten verketten
- Text formatieren
- Extraktion von Teilen einer Zeichenkette
- Suchen und Ersetzen von bestimmtem Text innerhalb einer Zeichenfolge
Verkettung von Zeichenketten in SQL
Mit der Funktion concat() können wir zwei oder mehr Strings verketten:
SELECT CONCAT('Street Roma',', ','72',', ','Padova') AS full_address
Das ist die Ausgabe:
full_address |
-----------------------+
Street Roma, 72, Padova|
Diese Funktion wird häufig verwendet, um Informationen aus verschiedenen Spalten, wie Namen und Adressen, zu kombinieren.
Alternativ kannst du auch die Funktion CONCAT_WS() verwenden:
SELECT CONCAT_WS(',','Street Roma','72','Padova') as full_address
An der Syntax kannst du erkennen, dass es einfacher und effizienter ist, wenn du mehr als zwei Spalten mit demselben Trennzeichen kombinieren willst.
Text formatieren
Dies sind verschiedene SQL-Stringfunktionen, mit denen du Text anpassen kannst, indem du die Groß- und Kleinschreibung änderst, zusätzliche Leerzeichen entfernst und andere Operationen ausführst. Jede Funktion ist mit ihrer Syntax und der entsprechenden Beschreibung aufgeführt.
|
Funktion Syntax |
Beschreibung |
| LOWER(string) |
Gibt den Text mit allen Zeichen in Kleinbuchstaben zurück |
| UPPER(string) |
Gibt den Text mit allen Zeichen in Großbuchstaben zurück |
| TRIM(string, [Zeichen]) |
Entfernt standardmäßig Leerzeichen von der linken und rechten Seite der Zeichenkette, Sonderzeichen, wenn angegeben |
| LTRIM(string, [Zeichen]) |
Entfernt standardmäßig Leerzeichen von der linken Seite des Strings, Sonderzeichen, wenn angegeben |
| RTRIM(string, [Zeichen]) |
Entfernt standardmäßig Leerzeichen von der rechten Seite des Strings, Sonderzeichen, wenn angegeben |
Um zu verstehen, wie man diese Funktionen anwendet, zeigen wir dir jetzt einige Beispiele. Stell dir vor, du hast E-Mail-Adressen mit Großbuchstaben und das Bundeslandkürzel in Kleinbuchstaben, und du möchtest das Format dieser Spalten ändern und korrigieren.
SELECT
LOWER('ANONymous@gmail.com') AS email,
UPPER('it') AS country
Dies ist die folgende Ausgabe:
email |country|
-------------------+-------+
anonymous@gmail.com|IT |
Neben der Änderung der Groß- und Kleinschreibung kann es auch nützlich sein, Leerzeichen am Anfang oder am Ende von Zeichenfolgen zu entfernen. Die Hauptfunktion bei dieser Art von Operation ist TRIM() von beiden Seiten zu entfernen. Andere Alternativen sind LTRIM() und RTRIM() , um Leerzeichen auf der linken bzw. rechten Seite zu löschen:
SELECT TRIM(' Street Roma, 72 ') AS trimmed_address,
LTRIM(' Street Roma, 72 ') AS ltrimmed_address,
RTRIM(' Street Roma, 72 ') AS rtrimmed_address
Die Abfrage liefert das folgende Ergebnis:
trimmed_address|ltrimmed_address|rtrimmed_address|
---------------+----------------+----------------+
Street Roma, 72|Street Roma, 72 | Street Roma, 72|
Anhand der Ausgabe kannst du die Unterschiede zwischen den einzelnen Funktionen erkennen. Außerdem können mit TRIM() neben Leerzeichen auch andere Sonderzeichen entfernt werden. Wir wollen zum Beispiel das Feld des Telefons bereinigen, indem wir das + Zeichen entfernen:
SELECT TRIM('++345','+') AS telephone
Die Ausgabe sieht wie folgt aus:
telephone|
---------+
345 |
Wie du sehen kannst, ist die Telefonnummer völlig sauber.
Text extrahieren
Nach der Verkettung und Änderung des Formats der Strings ist es an der Zeit, herauszufinden, wie man mit der speziellen SQL-Funktion SUBSTRING() Text extrahieren kann. Lass uns verschiedene Beispiele zeigen, um diese Funktion zu beherrschen:
SELECT
SUBSTRING('Antony',1,1) AS first_character,
SUBSTRING('Antony',1,3) AS first_3characters,
SUBSTRING('Antony',1,5) AS first_5characters
Das ist die Ausgabe:
first_character|first_3characters|first_5characters|
---------------+-----------------+-----------------+
A |Ant |Anton |
Wir können diese Funktion auch mit den vorherigen Funktionen kombinieren, um den ersten Buchstaben groß zu schreiben, den Rest der Buchstaben in Kleinbuchstaben umzuwandeln und dann alle Buchstaben zu verketten:
SELECT
LENGTH('antony') AS lenght_name,
SUBSTRING(UPPER('antony'),1,1) AS first_character,
SUBSTRING(LOWER('antony'),2,LENGTH('antony')) AS last_characters,
CONCAT(SUBSTRING(UPPER('antony'),1,1),SUBSTRING(LOWER('antony'),
2,LENGTH('antony'))) AS name
Diese Abfrage liefert das folgende Ergebnis:
lenght_name|first_character|LAST_characters|name |
-----------+---------------+---------------+------+
6|A |ntony |Antony|
Zusätzlich zu den bisher gesehenen Funktionen gibt es die Funktion LENGTH(), mit der du die Länge der Zeichenkette ermitteln kannst. In diesem Zusammenhang ist es sinnvoll, den Index des letzten Zeichens anzugeben.
Suchen und Ersetzen von Zeichenketten in SQL
Wir können die wichtigsten Funktionen zum Suchen und Ersetzen von Zeichenketten zeigen:
|
Funktion Syntax |
Beschreibung |
| REPLACE(string,x,y) |
Ersetze den x-Wert in der Zeichenkette durch den y-Wert |
| CHARINDEX(x,string) |
Finde die Position des x-Wertes innerhalb der Zeichenkette |
Eine sehr nützliche Funktion ist REPLACE(), um eine Teilzeichenkette durch eine andere Teilzeichenkette innerhalb der Zeichenkette zu ersetzen:
SELECT
'Street Roma - 32' AS address,
replace('Street Roma - 32','-',',') AS cleaned_address
Das ist die Ausgabe:
address |cleaned_address |
----------------+----------------+
Street Roma - 32|Street Roma , 32|
In diesem Fall haben wir einfach einen Bindestrich durch ein Komma in der Adresse ersetzt. Wir können auch versuchen, die Position des Bindestrichs in der Adresse zu finden:
SELECT
'Street Roma - 32' AS address,
LENGTH('Street Roma - 32') AS length_address,
CHARINDEX('-','Street Roma - 32') AS location_dash
Die Abfrage liefert das folgende Ergebnis:
address |length_address|location_dash|
----------------+--------------+-------------+
Street Roma - 32| 16| 13|
Wir können feststellen, dass das Symbol - an Position 13 der Adresse steht, meistens am Ende der Zeichenkette.
Fazit
Die Beherrschung dieser SQL-String-Funktionen kann den Unterschied bei der effizienten Datenbereinigung ausmachen. Natürlich geht der Artikel nicht auf alle Funktionen ein, sondern nur auf eine kurze Liste mit den wichtigsten Funktionen. Nicht alle SQL-Funktionen sind immer gültig und können sich je nach Art der Datenbank, die du verwendest, ändern. Zum Beispiel kann CHARINDEX in einer MySQL-Datenbank durch LOCATE() ersetzt werden.
Um mit diesen Funktionen zu üben, kannst du dir unsere Berichte in SQL Kurs besuchen. Es kann dir helfen, ein Experte im Bereinigen von Daten und Erstellen komplexer Berichte zu werden. Wir empfehlen auch die SQL-Grundlagen Lernpfad, der alle wesentlichen Aspekte von SQL abdeckt.
