Zurück zur Artikelliste Artikel
5 Leseminuten

Wie man Junk-Zeichen in SQL entfernt

Unerwünschte Zeichen in Textdaten können sehr lästig sein, aber es gibt einen einfachen Weg, sie zu entfernen. Scrollen Sie nach unten, um zu erfahren, wie Sie unerwünschte Zeichen in SQL auf einfachste Weise entfernen können!

Manchmal finden wir unerwünschte Zeichen in unseren String-Daten, weil unsere SQL-Abfragen nicht wie erwartet funktioniert haben. Außerdem können diese zusätzlichen Zeichen manchmal unsichtbar sein, was die Sache sehr kompliziert macht. In diesem Artikel werden wir einige SQL-Funktionen für Strings untersuchen, die mit unerwünschten Zeichen umgehen können - ob sichtbar oder nicht!

Die Wichtigkeit der Standardisierung von Zeichenketten in Ihrer Datenbank

Wenn wir mit Daten arbeiten, die als Freitext eingegeben oder geladen wurden, ist die Datenqualität oft recht schlecht. Unerwünschte Zeichen können die Qualität Ihrer Daten erheblich beeinträchtigen und die Analyse der gesammelten Informationen erschweren. Daher ist es wichtig zu verstehen, wie Sie SQL-String-Funktionen verwenden können, um diese häufigen Probleme zu beheben, damit Sie Ihre Datenbank bereinigen können.

Wie entfernt man Junk-Zeichen in SQL? Beginnen wir mit der Untersuchung der SQL-Funktionen trim und length.

Problemlösung mit SQL-String-Funktionen

Um zu erklären, wie man Probleme mit unerwünschten Zeichen löst, arbeiten wir mit einer einfachen Datenbank aus dem Gesundheitswesen. Stellen Sie sich vor, Sie haben einen Arzt, der alle seine Patientendaten in einer einzigen Tabelle speichert. Die Tabelle enthält den vollständigen Namen des Patienten, das Datum des Besuchs, die Diagnose des Arztes, die vorgeschlagene Behandlung und alle verschriebenen Medikamente.

Jedes Mal, wenn ein Patient seine Praxis aufsucht, legt der Arzt einen neuen Datensatz an. Er tippt seine Notizen manuell in die Datenbank ein, so dass die Datenqualität gelegentlich schlecht ist.

Full_Name date diagnostic treatment Drugs_in_receipt
John Smith ’03/04/2016′ Flu rest “aspirin, paracetamol”
Mary Deep ’10/11/2016′ Food Poisoning Rest & diet “penicillin,paracetamol”
Agnes Jason ’03/12/2016′ flu rest “aspirin, paracetamol”
Johnny SMITH ’15/03/2017′ Food Poisoned Rest & diet “penicillin,paracetamol”
AGNES Jason ’19/072017′ angina Rest and don’t speak “amoxicillin”
Peter Duckerz ’10/10/2017′ Flu Rest “paracetamol”

SQL-Funktionen zum Entfernen von unsichtbaren und unerwünschten Zeichen

In manchen Fällen kann eine Textzeichenfolge unerwünschte Zeichen enthalten, z. B. Leerzeichen, Anführungszeichen, Kommata oder sogar "|"-Trennzeichen. Diese können sich auf einer oder beiden Seiten der Zeichenkette befinden. Wir können diese unerwünschten Zeichen mit den Funktionen SQL TRIM, SQL LTRIM und SQL RTRIM entfernen. Sie sind sich sehr ähnlich und werden in der folgenden Tabelle erläutert:

Function Parameters Behavior
LTRIM A string and a specific character Removes the specified character from the left side only
RTRIM A string and a specific character Removes the specified character from the right side only
TRIM A string and a specific character Removes the specified character from both sides

Probieren wir diese Funktionen aus, beginnend mit LENGTH. Wie kann man mit diesen Funktionen unerwünschte Zeichen in SQL entfernen?

Wenn Sie sich die Originaltabelle ansehen, werden Sie feststellen, dass einige Einträge in der Diagnosespalte unerwünschte Zeichen enthalten, wie z. B. unnötige Leerzeichen am Anfang. Aber es gibt auch einige versteckte Leerzeichen nach jedem Eintrag. Um dies zu beheben, zählen wir zunächst die Anzahl der Zeichen in den Diagnosezeichenfolgen mit Hilfe der Funktion LENGTH. Da Leerzeichen keine sichtbaren Zeichen sind, verwenden wir spitze Klammern, um uns zu zeigen, wo die zusätzlichen Leerzeichen (falls vorhanden) sind.

Schauen wir uns an, wie die Funktion SQL LENGTH in dieser Abfrage funktioniert:

SELECT 	diagnostic as real_diagnostic,
	 	length(diagnostic) as field_length,
		'<' || diagnostic || '>' as delimited_diagnostic
FROM patient_data 
real_diagnostic field_length delimited_diagnostic
Flu 3 <Flu>
Food Poisoning 14 <Food Poisoning>
flu 4 < flu>
Food Poisoned 15 < Food Poisoned>
angina 6 <angina>
Flu 4 < Flu>

Wir können sehen, dass mehrere Datensätze unerwünschte Zeichen, d. h. unnötige Leerzeichen, enthalten. Für " flu" ist die Länge 4 statt 3, und das abgegrenzte Feld zeigt das Leerzeichen am Anfang. Mit einer geeigneten Abfrage lässt sich dieses Problem beheben und das unnötige Leerzeichen entfernen. Lassen Sie uns das jetzt tun!

SELECT	diagnostic as real_diagnostic, 	
		trim(diagnostic) as trimmed_diagnostic
FROM patient_data 
real_diagnostic trimmed_diagnostic
Flu Flu
Food Poisoning Food Poisoning
flu flu
Food Poisoned Food Poisoned
angina angina
Flu Flu

Leistungsstarke Zeichenketten: Verschachtelte SQL-String-Funktionen

Nehmen wir an, unser Arzt möchte wissen, wie viele Patienten mit jeder der Krankheiten in der Spalte diagnostic diagnostiziert wurden. Wir würden die folgende Abfrage verwenden, um diese Informationen zu erhalten:

SELECT diagnostic, count(*)
FROM  patient_data
GROUP BY diagnostic
diagnostic count(*)
Flu 1
Food Poisoning 1
flu 1
food poisoning 1
angina 1
Flu 1

Wie wir sehen können, ist das Ergebnis nicht das, was wir erwartet haben. Dieselbe Krankheit taucht mehrmals auf, weil der Arzt bei der Eingabe nicht konsequent war. Die Diagnose "Grippe" wird als "Grippe", "Grippe" und "Grippe" angezeigt. Wir wissen, dass es sich um dieselbe Krankheit handelt, aber die Datenbank sieht sie als drei verschiedene Dinge an.

Wir haben die Möglichkeit, diese Abfrage zu korrigieren und das gewünschte Ergebnis zu erhalten. Wir können denselben verschachtelten Ausdruck verwenden, um die unerwünschten Zeichen (zusätzliche Leerzeichen) loszuwerden und die Fehler bei der Großschreibung zu beseitigen. So sieht es aus:

SELECT lower(trim(diagnostic)), count(*)
FROM  patient_data
GROUP BY lower(trim(diagnostic))
diagnostic count(*)
flu 3
food poisoning 2
angina 1

In der Programmierung ist es üblich, Funktionen zu verschachteln oder eine Funktion innerhalb einer anderen Funktion aufzurufen, um sie als Parameter zu verwenden. Genau das haben wir im vorherigen Beispiel getan.

Erfahren Sie mehr über SQL-String-Funktionen

In diesem Artikel haben wir die wichtigen SQL-String-Funktionen TRIM und LENGTH behandelt, um zu lernen, wie man Junk-Zeichen in SQL entfernt. Wenn Sie im Rahmen einer ersten Diagnose versteckte oder unerwünschte Zeichen erkennen möchten, verwenden Sie LENGTH. Verwenden Sie dann TRIM, um unerwünschte Zeichen zu beseitigen. Wir haben auch besprochen, wie Sie SQL-Funktionen verschachteln können, was eine leistungsstarke Technik in der Programmierung ist.

Wenn Sie mehr über SQL-Stringfunktionen erfahren möchten, besuchen Sie unseren Kurs Standard-SQL-Funktionen . Testen Sie ihn noch heute kostenlos!