Saya menggunakan MySQL dengan template Spring JDBC untuk aplikasi web saya. Saya perlu menyimpan nomor telepon dengan hanya digit (10). Saya sedikit bingung mengenai tipe data yang digunakan.
String &; VARCHAR.
Jangan coba-coba menyimpan nomor telepon sebagai nomor yang sebenarnya. itu akan merusak format, menghapus 0
sebelumnya dan hal-hal lain yang tidak diinginkan.
Anda dapat, jika Anda memilih untuk, membatasi input pengguna hanya untuk nilai numerik tetapi bahkan dalam kasus itu, jaga agar data backing Anda tetap disimpan sebagai karakter/string dan bukan angka.
Sadarilah dunia yang lebih luas dan bagaimana panjang dan format angka mereka berbeda sebelum Anda mencoba menerapkan pembatasan panjang, validasi, atau topeng apa pun (misalnya XXX-XXXX-XXXX).
Karakter non-numerik dapat valid dalam nomor telepon. Contoh utama adalah +
sebagai pengganti 00
di awal nomor internasional.
Diedit dari percakapan di komentar:
Di MySQL -> INT(10) tidak berarti nomor 10-digit, itu berarti integer dengan lebar layar dari 10 digit. Nilai maksimum untuk INT dalam MySQL adalah 2147483647 (atau 4294967295 jika unsigned).
Anda dapat menggunakan BIGINT bukan INT untuk menyimpannya sebagai numerik. Menggunakan BIGINT akan menyelamatkan anda 3 byte per baris atas VARCHAR(10).
Jika anda ingin Menyimpan "Negara + area + nomor secara terpisah". Cobalah menggunakan VARCHAR(20). Hal ini memungkinkan anda kemampuan untuk menyimpan nomor telepon internasional dengan benar, yang harus perlu timbul.
Pertimbangkan untuk menggunakan E. 164 format. Penuh dukungan internasional, anda'd perlu VARCHAR 15 digit.
Lihat Twilio's rekomendasi untuk informasi lebih lanjut tentang lokalisasi nomor telepon.
varchar
String
Regex sederhana. Lihat: https://stackoverflow.com/questions/15111420/how-to-check-if-a-string-contains-only-digits-in-java. Gunakan javax.constraints.Pattern.
anda dapat menggunakan var-char,String,dan int ,itu tergantung pada anda, jika anda hanya menggunakan kode negara dengan nomor ponsel dari anda dapat menggunakan int,jika anda menggunakan format nomor dari menggunakan String atau var-char tipe, jika anda menggunakan var-char maka harus menajiskan ukuran jumlah dan membatasi dari pengguna.
It's semua didasarkan pada kebutuhan anda. jika anda sedang mengembangkan skala kecil aplikasi dan hanya mencakup wilayah tertentu (target audience), anda dapat memilih BIGINT untuk menyimpan angka saja sejak VARCHAR mengkonsumsi lebih banyak byte dari BIGINT ( bisa optimal penggunaan memori design matters ). tetapi jika anda mengembangkan skala besar aplikasi dan target pengguna global dan anda memiliki database yang cukup kapasitas untuk menyimpan data, anda pasti dapat memilih VARCHAR.