10桁の携帯電話番号、つまり9999999999を保存します。数値または文字列データ型にする必要がありますか?これに対して計算操作や操作を行いたくない
どちらがメモリとパフォーマンスの点で優れていますか?
ITU-T勧告E.164 は、国コードに3桁、国ダイヤル計画内の電話番号に最大15桁が必要であることを示しています。
そして、多くの人が句読点を追加します。例えば:
+1.212.555.1212は北米の番号です。北米中心のアプリで(212)555-1212にレンダリングすることもできます。
32文字のテキストが世界中でうまくいくはずです。
数字を使用しないでください。ごめんなさい。私は:2つのことでした。
2.12555E+09
それはSIRIが私に言っているのとほとんど同じくらい愚かです、あなたは2つのブリオン、1億2500万人から電話をしています...。電話帳番号は数値データ型ではありません。これを見てください: 電話番号についての偽りのプログラマー 。
電話番号はstring
またはint
の制限を超えるため、long
でなければなりません。したがって、これらのシナリオを処理するには、string
が常に優先されます。
心に留めておくべきいくつかのこと:
一般に、計算を計画していない数値は、文字列の形式として保存する必要があります。番号をゼロから開始できるようにする必要がある場合(一部の電話番号がそうするように、あなたがそうするように)、これは不可欠です。
エルゴ、電話番号を巨大な整数として保存できる場合(または、いつ)(64ビット整数で保存できる場合)、そうすべきではありません。数値がゼロで始まるとすぐにデータが失われます。
電話番号を保存する場合、国コードは特別な種類の情報であることを忘れないでください。これを保存するときに、これを残りの番号から分離するのが最善です。このようにすると、国ごとに電話番号を簡単に照会できます。また、(取得するたびにではなく、保存する前に)番号の解析を複数回行う必要はありません。また、国番号と一緒に電話番号を保存する場合は、2つの異なる国からの2つの番号があるため、国コードを常に保存することを確認するために、事物を検証する必要があります一方が国コードを持ち、もう一方が持っていない場合、同一になる可能性があります。
また、句読点は表示方法であり、データの保存方法とは関係がないことも忘れないでください。いつでも希望する方法でデータを表示することを選択できます。どのような場合でも、希望する方法は多くの要因に依存します。たとえば、どの種類のデータを提示し、誰に提示し、場合によってはwhenデータを提示します。電話番号の場合、句読点なしで、文字列として番号を保存する必要があります。
国際電話番号の解析、フォーマット、検証については、Googleのライブラリをご覧になることをお勧めします( https://github.com/googlei18n/libphonenumber )。このライブラリに電話番号と国コードを入力すると、番号が有効で有効かどうか、所属する地域、番号の種類など、ライブラリに関する有用な情報が多数提供されます。 。
プロのヒントI:ユーザーに国コードを入力させるのではなく、番号が属する国を選択する方法を提供します。あなたにとっても、ユーザーにとっても良い。
Pro tip II:「北米中心のアプリ」や「ここに中心のアプリを挿入」など、特にアプリが利用可能な場合はめったにありませんウェブ上で。それは起こりますが、まれです。そのため、アプリを世界の一部よりもむしろ準備するほうが賢明でしょう。