00 Stimmen

MySQL: Werte mit führenden Nullern auslesen

Frage von Sledge | 21.05.2012 um 15:09

Ich möchte Werte aus einer Spalte in MySQL mit führenden Nullern auslesen. Gibt es dafür einen MySQL Befehl?

Am liebsten wäre mir, wenn die Werte direkt so aus MySQL kommen würden, damit ich nicht erst mit PHP oder anderen Nach-Formatierungen die Nullen hinzufügen muss.

AntwortenPositivNegativDatumStimmen
Avatar
00 Stimmen

Falls du Integer-Werte meinst, die natürlich nicht mit führenden Nullen aus der Datenbank kommen, speicher die Werte doch einfach als VARCHAR ab.

Dann kannst du so viele Nullen direkt abspeichern, wie du magst und hast das Problem erst gar nicht.
23.05.2012 um 19:26

AntwortenPositiv Negativ
Avatar
22 Stimmen

Würde ich so nicht machen, die anderen Lösungen sind da um einiges besser. Wenn du Integer-Werte hast, solltest du sie auch als Integer abspeichern.

Erstens verbraucht ein VARCHAR Feld so unnötig viel Speicherplatz und zweitens ist die Bearbeitung (zum Beispiel Addition etc) mit einer Integer-Spalte viel einfacher als mit String-Datentypen.
28.05.2012 um 11:24

Positiv Negativ
Antworten
Avatar
11 Stimme

Ich bin auch für die LPAD-Lösung. Ansonsten könnte dir auch noch helfen, die Spalte als "UNSIGNED ZEROFILL" zu deklarieren. Dann sollte das auch automatisch mit den Nullen zu Beginn funktionieren.

Bei "UNSIGNED ZEROFILL" definierst du die Länge dann durch zum beispiel INT(5) für fünfstellig aufgefüllte Werte.
29.05.2012 um 23:09

AntwortenPositiv Negativ
Avatar
2Beste Antwort4 Stimmen

Es gibt den schönen MySQL Befehl LPAD, was für Left Padding steht. Ich denke, das ist genau das, wonach du hier gesucht hast.

Hier mal ein kleines Beispiel dafür:

SELECT LPAD(spalte, 3, '0') FROM tabelle;

Diese MySQL Abfrage liest die Werte aus "spalte" aus der Tabelle "tabelle" aus und sorgt dafür, dass die zu einer Länge von 3 Zeichen fehlenden Zeichen mit einer Null aufgefüllt werden.

LPAD erwartet 3 Parameter:

  • Zuerst die Spalte, aus der die Werte kommen sollen (hier "spalte").
  • Dann wie lang der String werden soll (hier 3 Zeichen lang).
  • Und schließlich das Zeichen, mit dem aufgefüllt werden soll (hier '0', man kann aber auch jedes andere Zeichen nehmen).

So sollte es funktionieren.
27.05.2012 um 21:36

AntwortenPositiv Negativ
Avatar
22 Stimmen

Das ist so aber nicht richtig. Es gibt zwei Befehle RPAD und LPAD. Das eine füllt rechts und das an links auf. Was hier gebraucht wird ist linksauffüllen, also LPAD.

Die Anweisung lautet auch anders, als oben geschrieben

SELECT LPAD(Spalte, Anzahl, Womit ) FROM tabelle;

Also:

SELECT LPAD(spalte, 3, '0') FROM tabelle;
26.11.2014 um 17:27

Positiv Negativ
Avatar
11 Stimme

Vielen Dank. Völlig richtig.

Ich habe den Fehler in meiner Antwort korrigiert.
28.11.2014 um 17:55

Positiv Negativ
Antworten
Antworten

Ä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.