it-swarm.com.de

Hinzufügen einer führenden Null zu einigen Werten in einer Spalte in MySQL

Ich habe eine CSV-Datei in CSV an mich gesendet. Das interessierende Feld besteht aus 8 Ziffern. Einige davon begannen mit einer 0. Das Feld wurde numerisch gesendet. Ich habe jetzt einige führende Nullen fallen gelassen.

Ich habe das Feld bereits in varchar konvertiert. Ich muss das jetzt tun:

Ich habe das jetzt:

12345678
1234567

Ich muss das haben:

12345678
01234567
63
mpg

Ändern Sie das Feld wieder in numerisch und verwenden Sie ZEROFILL , um die Nullen beizubehalten

oder

verwenden Sie LPAD()

SELECT LPAD('1234567', 8, '0');
142
John Conde

Möglicherweise:

select lpad(column, 8, 0) from table;

Editierte als Antwort auf die Frage von mylesg in den Kommentaren:

ok, scheint die Änderung an der Abfrage vorzunehmen - aber wie kann ich sie dauerhaft in der Tabelle festhalten (ändern)? Ich habe ein UPDATE anstelle von SELECT versucht

Ich gehe davon aus, dass Sie eine ähnliche Abfrage verwendet haben:

UPDATE table SET columnName=lpad(nums,8,0);

Wenn dies erfolgreich war, aber die Werte der Tabelle immer noch ohne führende Nullen sind, würde ich vorschlagen, dass Sie die Spalte wahrscheinlich als numerischen Typ festlegen. In diesem Fall müssen Sie die Tabelle so ändern, dass die Spalte vom Typ text/varchar () ist, um die führenden Nullen zu erhalten:

Zuerst:

ALTER TABLE `table` CHANGE `numberColumn` `numberColumn` CHAR(8);

Führen Sie dann das Update aus:

UPDATE table SET `numberColumn`=LPAD(`numberColum`, 8, '0');

Dies sollte dann die führenden Nullen erhalten; Der Nachteil ist, dass die Spalte nicht mehr strikt numerisch ist. Daher müssen Sie möglicherweise eine strengere Validierung erzwingen (abhängig von Ihrem Anwendungsfall), um sicherzustellen, dass keine Zahlen in diese Spalte eingegeben werden.

Verweise:

22
David Thomas

Ich hatte ein ähnliches Problem beim Importieren von Telefonnummerndaten aus Excel in die MySQL-Datenbank. Also ein einfacher Trick, ohne die Länge der Telefonnummer ermitteln zu müssen (weil die Länge der Telefonnummern in meinen Daten variiert):

UPDATE table SET phone_num = concat('0', phone_num) 

Ich habe gerade 0 vor dem phone_num konzentriert.