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.
Über den Autor
Der Autor hat keine Kurzbeschreibung seines Profils angegeben.
Profil anzeigen
Ähnliche Themen
PHP: String vorne oder hinten mit beliebigen Zeichen auf bestimmte Länge auffüllen
Tipp | 3 Kommentare
jQuery: CSS Stylesheet Switcher
Tutorial | 1 Kommentar
PHP: Nur bestimmte Buchstaben, Zahlen und Zeichen in einem String zulassen
Tipp | 10 Kommentare
JavaScript: Letztes Zeichen aus String entfernen
Tipp | 0 Kommentare
PHP: target="_blank" zu (ausgehenden) HTML Links hinzufügen
Tipp | 0 Kommentare
jQuery: Nach unten und nach oben scrollen mit und ohne JavaScript
Tipp | 0 Kommentare
RTF: Text ausrichten - Links, Rechts, Zentriert und Blocksatz
Info | 0 Kommentare
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.
Danke, hat super funktioniert!
Werde in Zukunft öfter vorbeischaun!
20.10.2020 um 12:54