35 Stimmen

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

Info von Stefan Trost | Letztes Update am 30.12.2022 | Erstellt am 13.05.2013

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

Ein Beispiel dafür sieht zum Beispiel 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 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. In unserem Beispiel demonstrieren wir das mit einem Bindestrich als Auffüllungszeichen und einer Auffüllungslänge von 3 Zeichen.

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

So geht es mit SQLite

Um dasselbe Ergebnis wie in MySQL auch in SQLite zu bekommen, benutzen wir eine Mischung aus einer String-Verknüpfung (das ist der || Operator) und der Funktion 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
44 Stimmen

Danke, hat super funktioniert!

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

AntwortenPositiv Negativ
Antworten

Über den Autor

AvatarSoftware von Stefan Trost finden Sie auf sttmedia.de. Benötigen Sie eine individuelle Software nach Ihren eigenen Wünschen? Schreiben Sie uns: sttmedia.de/kontakt
Profil anzeigen

 

Ähnliche Themen

jQuery: CSS Stylesheet Switcher

Tutorial | 1 Kommentar

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.