2016-07-28 8 views
1

Ich bin Anfänger in SQL-Abfrage und ich versuche, meine Zeilen so zu aktualisieren:postgresql Update Zeile auf feste stellige Nummer

1 ---> 0001

15 -> 0015

254 -> 0254

1458 -> 1458

Typ Meine Spalte ist Text und es gibt viele Spalten, so kann ich nicht mit

Griff
update table1 set col1 = 0001 where col1 = 1; 

und so weiter ..

Diese einfache Frage scheint aber nach Forschung, konnte ich nicht eine Lösung finden. alles was ich brauche ist so etwas wie

foreach row in col1 
if((int)row>0 and < 10) 
then row = "000" + row; 

Alle Texte sind infact Integer-Wert, aber ich habe sie als Text zu halten. Was ist SQL Abfrage des obigen Codes?

Dank

+0

Welcher Datentyp ist diese Spalte? Wenn es eine Nummer ist, speichert es niemals führende Nullen –

+0

Nein, sein Typ ist Text. (z. B. String) – onur

Antwort

2

können Sie verwenden, um die lpad() Funktion:

update table1 
    set col1 = lpad(col1, 4, '0') 
where length(col1) < 4; 

Aber die eigentliche Frage ist: Warum Sie Zahlen als Textwerte zu speichern sind? Das ist fast immer eine schlechte Wahl.

+0

Danke, es funktioniert, aber es muss kleine Änderungen geben. wir müssen col1 mit '0' ändern. Dies funktionierte für mich: update table1 set col1 = lpad (col1, 4, '0') wo die Länge (col1) <4; – onur

Verwandte Themen