11 Stimme

SQLite: RPAD und LPAD in SQLite - Zeichen rechts und links auffüllen

Info von SmartUser | 13.05.2013 um 12:42

Problem: Um das Ergebnis aus einer Abfrage in MySQL links oder rechts mit einem beliebigen Zeichen aufzufüllen, stellt MySQL die Befehle RPAD und LPAD (Right Padding und Left Padding) zur Verfügung. Ein Beispiel sieht so aus:

SELECT col;   SELECT LPAD(col, 3, '-');  SELECT RPAD(col, 3, '-');
1             --1                        1--
22            -22                        22-
333           333                        333

Je nachdem, wie lang der Inhalt von "col" ist, wird das Ergebnis mit bei LPAD auf der linken Seite mit dem angegeben Zeichen und der angegebenen Länge aufgefüllt oder entsprechend auf der rechten Seite mit RPAD.

Leider stellt SQLite keine derartige Funktion zur Verfügung, so dass wir uns eines Tricks bedienen müssen.

Lösung: Um dasselbe Ergebnis wie in MySQL in SQLite zu bekommen, benutzen wir eine Mischung aus String-Verknüpfung (das ist der || Operator) und SUBSTR.

Zunächst die Entsprechung für LPAD:

LPAD(col, 3, '-') FROM ...
SUBSTR('---' || col, -3, 3) FROM ...

Und hier die Entsprechung für RPAD:

RPAD(col, 3, '-') FROM ...
SUBSTR(col || '---', 1, 3) FROM ...

Zur Erklärung: Der Trick funktioniert folgendermaßen: Wir lesen den Inhalt von "col" aus und verknüpfen diesen mit dem String "---". Dieser String ist so lang, wie die maximale Länge an Zeichen, die aufgefüllt werden könnten. Das Ergebnis dieser Abfrage alleine wäre demnach zum Beispiel "---1" oder "---22".

Anschließend benutzen wir SUBSTR um den entstandenen String entsprechend unserer gewünschten Länge zu kürzen. Damit wird zum Beispiel aus "---1" der String "--1" oder aus "---22" der String "-22". Und schon haben wir unser Ergebnis.

Diese Prozedur machen wir entweder vorne oder hinten, je nachdem ob wir LPAD oder RPAD nachbauen möchten. Um das Beispiel an eigene Bedürfnisse anzupassen, muss man den String "---" durch seine aufzufüllenden Zeichen ersetzen und dessen Länge als auch "-3" und "3" durch die gewünschte Padding-Länge ersetzen.

AntwortenPositivNegativ
Avatar
00 Stimmen

Danke, hat super funktioniert!

Werde in Zukunft öfter vorbeischaun!
20.10.2020 um 12:54

AntwortenPositiv Negativ
Antworten

Über den Autor

AvatarDer Autor hat keine Kurzbeschreibung seines Profils angegeben.
Profil anzeigen

 

Ähnliche Themen

Wichtiger Hinweis

Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.

Jetzt mitmachen

Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.