MySQL'de telefon numarası için en iyi veri türü hangisidir ve bunun için Java türü eşlemesi ne olmalıdır?
Web uygulamam için Spring JDBC şablonu ile MySQL kullanıyorum. Telefon numarasını sadece rakamlarla (10) saklamam gerekiyor. Veri türünü kullanma konusunda biraz kafam karıştı.
- MySQL'de bunun için tercih edilen veri türü nedir?
- Bunun için Bean (POJO) sınıflarında Java veri türü ne olmalıdır?
- Bu veri türünü javax doğrulamaları/kısıtlamaları ile uzunluk ve ayrıca yalnızca izin verilen rakam için nasıl doğrulayabilirim?
49
3
Strings & VARCHAR.
Telefon numaralarını gerçek numaralar olarak saklamayı denemeyin. biçimlendirmeyi bozacak, önceki
0
ları ve diğer istenmeyen şeyleri kaldıracaktır.İsterseniz, kullanıcı girdilerini yalnızca sayısal değerlerle sınırlayabilirsiniz, ancak bu durumda bile, yedeklenen kalıcı verilerinizi sayılar değil karakterler/dizeler olarak tutun.
Herhangi bir uzunluk kısıtlaması, doğrulama veya maske (örneğin XXX-XXXX-XX) uygulamaya çalışmadan önce daha geniş dünyanın ve sayı uzunluklarının ve biçimlendirmelerinin nasıl farklılık gösterdiğinin farkında olun.
Sayısal olmayan karakterler telefon numaralarında geçerli olabilir. Uluslararası bir numaranın başında
00
yerine+
kullanılması buna en iyi örnektir.Yorumlardaki konuşmalardan düzenlenmiştir:
varchar
String
Basit bir regex. Bkz: https://stackoverflow.com/questions/15111420/how-to-check-if-a-string-contains-only-digits-in-java. javax.constraints.Pattern kullanın.
Muhtemelen 15-20 uzunluğunda VARCHAR yeterli olacaktır ve veritabanı için en iyi seçenek olacaktır. Muhtemelen telefon numaralarınızla birlikte çeşitli tire ve artı işaretlerine ihtiyaç duyacağınız için.