2009-08-02 4 views
2

Ich habe um ein paar tausend Zeilen, die 3-stellige Zahlen beginnend mit 100 und reichen bis 199, die ich mit 0 vorangestellt werden muss. Es gibt auch Tausende von anderen Zahlen 4-stellig auch Nummern, die ich nicht ändern möchte.MySQL Anhängen, Präfix einen Bereich von Zahlen mit 0

Ich brauche alle 3-stelligen Nummern im Bereich zu finden und nur die von 100 -199 mit einer 0 vorzumerken, so wie sie 4-stellig sind, zB 100> 0100, 104> 0104 und so weiter. Auch diese Zahlen können z. B. 110 nächste ist 124.

Gibt es eine Möglichkeit, die ich mit SQL tun kann? weil ich nicht wünsche, diese manuell zu ändern!

Vielen Dank

+0

Gibt es eine Skriptsprache, die Sie verwenden? –

+0

Im mit PHP5 und MySQL Front verwenden. – gus

+0

Überprüfen Sie, dass das Feld ein CHAR ist, wie das Hinzufügen einer Null auf der linken Seite einer Zahl und das Speichern in der Datenbank wird nur wieder entfernt (Zahlen beginnen nicht mit einer Null) –

Antwort

6

Dies geschieht am besten mit einer Programmiersprache. Das heißt, hier ist eine SQL-Abfrage, die alle vorhandenen Nummern aktualisieren:

UPDATE tableName SET fieldName = right(concat('0000',fieldName), 4) WHERE length(fieldName) < 4 
+0

Danke cpharmston, du würde denken, dass es nur alles ersetzen würde <4 mit 0000. Aber es behält nicht die ursprüngliche Nummer und funktioniert großartig - danke, du hast mir eine Menge Zeit erspart. Prost. – gus

6

Die LPAD Funktion ist das, was Sie suchen. Sie können dies in Ihrer Abfrage verwenden, um die Zahlen im laufenden Betrieb aufzufüllen.

SELECT LPAD(CONVERT(num AS CHAR), 4, '0') FROM tbl WHERE num > 99 AND num < 200 

Wenn Sie es vorziehen, diese auf der Skript Seite zu tun, str_pad wird das gleiche in PHP tun.

+0

Danke Dane der Sane. Ich werde das auch versuchen, aber das obige scheint gut zu funktionieren. – gus

+0

Danke. Es funktioniert. –

Verwandte Themen