Ich verwende MySQL mit der Spring JDBC-Vorlage für meine Webanwendung. Ich muss die Telefonnummer nur mit Ziffern speichern (10). Ich bin etwas verwirrt über Datentyp mit Datentyp.
Streicher & VARCHAR.
Speichern Sie Telefonnummern nicht als tatsächliche Nummern. es zerstört die Formatierung, entfernt 0
s und andere unerwünschte Dinge.
Wenn Sie möchten, können Sie die Benutzereingaben auf nur numerische Werte beschränken, aber selbst in diesem Fall behalten Sie die Sicherung Ihrer Daten als Zeichen/Strings und nicht als Zahlen.
Achten Sie auf die weitere Welt und darauf, wie sich deren Längen und Formatierungen unterscheiden, bevor Sie versuchen, Längenbeschränkungen, Validierungen oder Masken (z. B. XXX-XXXX-XX) zu implementieren.
Nicht-numerische Zeichen können in Telefonnummern gültig sein. Ein gutes Beispiel ist +
als Ersatz für 00
am Anfang einer internationalen Nummer.
Aus Konversation in Kommentaren bearbeitet:
In MySQL -> INT (10) bedeutet keine 10-stellige Zahl, sondern eine ganze Zahl mit einer Anzeigebreite von 10 Ziffern. Der Maximalwert für ein INT in MySQL ist 2147483647 (oder 4294967295, wenn es nicht vorzeichenbehaftet ist).
Sie können einen BIGINT anstelle von INT verwenden, um ihn als Zahl zu speichern. Verwenden von BIGINT speichert 3 Bytes pro Zeile über VARCHAR (10).
Wenn Sie "Land + Gebiet + Nummer separat speichern" möchten. Versuchen Sie es mit einem VARCHAR (20). Dadurch können Sie internationale Telefonnummern ordnungsgemäß speichern, falls dies erforderlich sein sollte.
Verwenden Sie das Format E.164 . Für eine vollständige internationale Unterstützung benötigen Sie einen 15-stelligen VARCHAR.
Siehe Twilios Empfehlung für weitere Informationen zur Lokalisierung von Telefonnummern.
String
Eine einfache Regex. Siehe: So prüfen Sie, ob eine Zeichenfolge nur Ziffern in Java enthält . Verwenden Sie javax.constraints.Pattern.
sie können var-char, String und int verwenden. Es hängt von Ihnen ab, ob Sie nur die Landesvorwahl mit Handynummer verwenden, als Sie int verwenden können use var-char muss dann die Größe der Zahl defile und vom Benutzer einschränken.
VARCHAR mit wahrscheinlich 15-20 Länge wäre ausreichend und wäre die beste Option für die Datenbank. Da würden Sie wahrscheinlich verschiedene Bindestriche und Pluszeichen zusammen mit Ihren Telefonnummern benötigen.
In MySQL: BIGINT . In Java: Long.
Es hängt alles von Ihrer Anforderung ab. Wenn Sie eine kleine App entwickeln, die nur eine bestimmte Region (Zielgruppe) abdeckt, können Sie BIGINT auswählen, um nur Zahlen zu speichern, da VARCHAR mehr Byte als BIGINT verbraucht (was den Entwurf des optimalen Speicherverbrauchs betrifft). Wenn Sie jedoch eine umfangreiche App entwickeln, die auf globale Benutzer abzielt und über genügend Datenbankfunktionen zum Speichern von Daten verfügt, können Sie VARCHAR definitiv wählen.