2010-06-09 19 views

Antwort

32

Nein, es ist fast immer eine schlechte Idee.

  • wird mehr Platz
  • Indizes werden nicht so gut funktionieren
  • Sie nicht Arithmetik tun können
  • die Daten nicht selbst Validierung wegen der Art
  • Auto-Modell-Generatoren geben geben Sie Zeichenfolge anstelle von numerischen
  • Aggregate wie SUM nicht mehr
  • die Ausgabe arbeiten kann Art falsch
  • Sie müssen es als eine Nummer CAST, zu verwenden, um Leistung
  • usw.
0

Sie können keine Berechnungen mit Spalten ausführen, die als varchar deklariert sind, daher sollten numerische Typen verwendet werden. Und da Ihre SQL-Abfrage ohnehin eine Zeichenfolge ist, übernimmt MySQL die gesamte Konvertierung für Sie (das bedeutet natürlich nicht, dass Sie die vom Benutzer bereitgestellten Werte nicht überprüfen müssen).

1

Ich denke, schlagen verursacht, ist in Ordnung, zu speichern Zahlen als varchar, solange Sie nicht wollen, calcs machen mit es.

Zum Beispiel wäre es besser, eine Telefonnummer oder Postleitzahlen in Varchar-Feldern zu speichern, weil Sie sie formatieren könnten.

+0

Ich würde Dinge wie Telefonnummern speichern, und nur Dinge wie Telefonnummern, wie Varchar, da sie nicht wirklich Zahlen als solche sind. Sie tun keine Mathematik für Telefonnummern. Wenn Sie jedoch Datentypen für Felder festlegen, sollten Sie immer die Verwendung numerischer Typen über varchar verwenden, es sei denn, Sie können sich einen guten Grund dafür überlegen, denn der Wechsel von Varchar zu numerisch ist viel schwieriger als umgekehrt. – GordonM

3

Sie können führende Nullen in einem Varchar speichern, die Sie nicht mit ganzzahligen Spalten ausführen können (z. B. ist es möglich, einen Unterschied zwischen 123 und 0000123 zu haben). Zum Beispiel Postleitzahlen in einigen Ländern. Wenn Sie dies jedoch tun müssen, dann haben Sie es wirklich mit Textinformationen zu tun, die eine varchar-Spalte haben sollten. Zum Beispiel sollten Telefonnummern oder Postleitzahlen auf jeden Fall in eine Varchar-Spalte gehen.

Andernfalls, wenn Sie Ihre Daten wie Zahlen verwenden (sie addieren, vergleichen, etc.), dann sollten Sie es in Integer-Spalte setzen. Sie verbrauchen viel weniger Platz und sind schneller zu benutzen.

+0

Das Problem der führenden Nullen kann auch ein Nachteil sein. Ich bin kürzlich auf eine Situation in einem Projekt gestoßen, wo aufgrund der Art und Weise, wie der Java-Code damit umgegangen ist, eine Tabelle führende Nullen hatte und die andere nicht. Dies machte es schwieriger, Joins in dieser Spalte durchzuführen. Die Daten waren eine Zahl und sollten daher wahrscheinlich als solche anstatt als Varchar gespeichert worden sein. – xdhmoore

Verwandte Themen