Bereinigen von Daten mit SQL-TRIMMEN Sie Ihren Leerraum

Ein häufiges Problem beim Importieren von Daten in eine Datenbank ist der unerwünschte Leerraum am Anfang oder Ende von Zeichenfolgen.

Führende und nachfolgende Leerzeichen können Probleme verursachen, wenn Sie versuchen, doppelte Datensätze zu identifizieren, Tabellen in Zeichenfolgenspalten zu VERKNÜPFEN oder einfach nach einem bestimmten Wert abzufragen.

Glücklicherweise entfernt die SQL TRIM-Funktion diesen lästigen führenden und nachfolgenden Leerraum aus Zeichenfolgen.

Leerzeichen ist ein Zeichen in einer Zeichenfolge, das einen horizontalen oder vertikalen Raum in der Typografie darstellt., Mit anderen Worten: Registerkarten, Zeilenvorschübe, Wagenrückläufe und ja Leerzeichen.

Ein Leerzeichen hat einen Zeichenwert, genau wie ‚A‘, ‚B‘ und ‚C‘ einen Wert haben. Wir können beim Drucken einfach nicht immer Leerzeichen sehen.

Und genau wie jedes andere Zeichen hat ein Leerzeichen einen Dezimalwert in der ASCII-Tabelle. Diese kleine Tatsache ist sehr praktisch, wenn Sie versuchen, ein Leerzeichen mit einem SQL-Befehl zu identifizieren.,

The TRIM Function

Safari Books online has a nice snippet on the TRIM command:

ANSI SQL Standard Syntax

TRIM( FROM ]
target_string
)

The default for the first parameter, LEADING | TRAILING | BOTH , is ‘BOTH’.

The default for is a space char(32) .,

Mit anderen Worten, wenn Sie nur die target_string (der einzige erforderliche Parameter) angeben, werden alle führenden und nachfolgenden Leerzeichen getrimmt.

Beispiel

Accept schneidet standardmäßig SOWOHL führende als auch nachfolgende Leerzeichen zu:

Hinweis: Die TRIM-Funktion für SQL Server-Versionen 2016 und niedriger enthält keine Argumente, die die Zeichen angeben, die aus einer Zeichenfolge TRIMMEN sollen. Sie trimmen nur führende/nachfolgende Leerzeichen.

Beispiel

Entfernen Sie nur FÜHRENDE Sternchen (*) enthalten., Beachten Sie, dass TRIM, obwohl nur ein ‚*‘ als Parameter angegeben ist, alle führenden Sternchen ( * ) entfernt, unabhängig davon, wie viele vorhanden sind.

SELECT '*** Hello World **',
TRIM(LEADING '*' FROM '*** Hello World **');+--------------------+---------------------------------------------+
| *** Hello World ** | TRIM(LEADING '*' FROM '*** Hello World **') |
+--------------------+---------------------------------------------+
| *** Hello World ** | Hello World ** |
+--------------------+---------------------------------------------+

Ein Beispiel für ein Leerraumszenario

Stellen Sie sich vor, Sie möchten Ihre Bestandsdatensätze für Spielzeugläden von Tabellenkalkulationen in eine RDBMS-Datenbank konvertieren. Sie laden erfolgreich eine Datenbanktabelle aus der Tabelle.,

Sie überprüfen das Laden, indem Sie die ursprüngliche Tabelle mit der neuen Datenbanktabelle vergleichen. Die Ergebnisse sehen wirklich gut aus.

Jetzt möchten Sie herausfinden, wie viele Spielzeugenten jemals empfangen wurden, sie fragen also die Datenbank ab:

SELECT toy_name, COUNT(*)
FROM toys
WHERE toy_name = 'duck'
GROUP BY toy_name;Empty set (0.00 sec)

Warten Sie, was?! Das kann nicht richtig sein, es werden keine Datensätze zurückgegeben? Sie schauen direkt auf die TOYS Tabelle in der Datenbank, Sie können die 11 Datensätze mit toy_name = ‚Ente’sehen.,

Sie führen also diese praktische kleine SQL-Anweisung aus, um Leerzeichen sichtbar zu machen:

Weitere Informationen zur Ersetzungsfunktion finden Sie hier.

Ah ha! Jetzt können Sie sehen, dass alle toy_names ein führendes Leerzeichen haben und einige von ihnen andere nachgestellte Leerzeichen haben.,

Sie führen eine Reihe von UPDATE-Anweisungen mit der TRIM-Funktion für führende und nachfolgende Leerzeichen aus: tabs char(9), Zeilenvorschübe char(10), carriage-returns char(13) und Leerzeichen .,

Sie führen die AUSWAHL erneut aus, um den Leerraum sichtbar zu machen, und puh, sie sind alle weg:

Jetzt können Sie Ihre Enten mit Zuversicht zählen:

SELECT toy_name, COUNT(*)
FROM toys
WHERE toy_name = 'duck'
GROUP BY toy_name;

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.