2010-05-07 13 views

Antwort

15

Änderungsdatentyp unsigned-zerofill, was Sie verwenden, float, int, dezimal (6,2) ... nur das Feld zu unsigned-zerofill Sie

2

Sie können den Datentyp als Varchar verwenden, um dies zu lösen.

2

Telefonnummern sind keine Ganzzahlen und Sie werden nur mit Problemen enden, die versuchen, sie als ganze Zahlen zu speichern, sie stattdessen als Zeichenfolgen zu speichern.

5

Telefonnummern sind nicht wirklich Zahlen in dem Sinne, dass sie nicht Ordnungszahl sind. Sie sind nur Charaktere - die Tatsache, dass sie Zahlen sind, ist nebensächlich.

speichern sie in einem varchar und weitermachen: D

5

Telefonnummern andere Symbole für die Lesbarkeit enthalten ... ein regexp für eine Telefonnummer sieht so etwas wie [0-9+-()*#]+. Sie müssen also ein Textfeld für Telefonnummern und eine Validierung verwenden.

+0

ein paar andere Formate zu berücksichtigen: 555/555-1212, 555.555.1212, 555-555-1212 x123 – Nathan

+2

Daher 'etwas wie' ... Validierung von Telefonnummern ist schwierig. Ich denke, '[0-9 + -() * # x., /] +' Kommt nahe. –

1

Ja - numerische Felder speichern nur die numerischen Werte, nicht die Formatierung von diesen (welches paddin mit führenden Nullen ist). Sie sollten entweder

  1. Änderung der Feldtyp aus integer zu varchar oder char (wenn Anzahl der Ziffern ist immer das gleiche).

  2. Speichern Sie die Zahl als Ganzzahl ABER vor 0 in der Präsentationsschicht nach Bedarf.

-1

bearbeiten können Wickeln Sie auch die gewünschte Zahl mit einer Null mit einer Funktion. Ich habe diese Funktion hinzuzufügen Null zu führen, wenn die „string“ kleiner als 2 Ziffern ist (es verwendet wurde, führende Nullen Stunden und Minuten hinzufügen)

function leadZero($num) { 
    if (strlen($num) < 2) { 
     return "0" . $num; 
    } else { 
     return $num; 
    } 

} 

Wenn Sie sagen, eine Reihe 2, die Sie wollen Ausgabe als 02, Sie würden LeadZero (2);

Dies fügt nur eine Null, wenn die Nummer weniger als 2 Ziffern lang ist! Zum Beispiel leadZero (14); kommt zurück