Ich habe eine CSV-Datei in CSV an mich gesendet. Das Interessengebiet besteht aus 8 Ziffern. Einige davon begannen mit einer 0. Das Feld wurde numerisch gesendet. Also habe ich jetzt einige führende Nullen fallen lassen.
Ich habe das Feld bereits in varchar konvertiert. Ich muss jetzt folgendes tun:
Ich habe das jetzt:
12345678
1234567
Ich muss das haben:
12345678
01234567
Möglicherweise:
select lpad(column, 8, 0) from table;
Bearbeitet als Antwort auf die Frage von mylesg in den Kommentaren unten:
Ich gehe davon aus, dass Sie eine Abfrage ähnlich der folgenden verwendet haben:
UPDATE table SET columnName=lpad(nums,8,0);
Wenn dies erfolgreich war, die Werte der Tabelle jedoch immer noch keine führenden Nullen enthalten, würde ich vorschlagen, dass Sie die Spalte wahrscheinlich als numerischen Typ festlegen. Wenn dies der Fall ist, müssen Sie die Tabelle so ändern, dass die Spalte vom Typ text / varchar () ist, um die führenden Nullen beizubehalten:
Zuerst:
ALTER TABLE `table` CHANGE `numberColumn` `numberColumn` CHAR(8);
Führen Sie zweitens das Update aus:
UPDATE table SET `numberColumn`=LPAD(`numberColum`, 8, '0');
Dies sollte dann die führenden Nullen bewahren; Der Nachteil ist, dass die Spalte nicht mehr ausschließlich numerisch ist. Daher müssen Sie möglicherweise eine strengere Validierung erzwingen (abhängig von Ihrem Anwendungsfall), um sicherzustellen, dass keine Ziffern in diese Spalte eingegeben werden.
Verweise:
lpad()
.quelle
Ich hatte ein ähnliches Problem beim Importieren von Telefonnummern aus Excel in die MySQL-Datenbank. Ein einfacher Trick, ohne die Länge der Telefonnummer identifizieren zu müssen (da die Länge der Telefonnummern in meinen Daten unterschiedlich war):
UPDATE table SET phone_num = concat('0', phone_num)
Ich habe gerade 0 vor dem
phone_num
.quelle