12

0で始まる電話番号を保存する必要がありますが、これをMySqlテーブルに保存しようとすると、実際にはゼロで始まる番号がないため、最初のゼロが削除されます。

この問題を解決するにはどうすればよいですか?フィールドタイプを整数から別のタイプに変更する必要がありますか?

4

7 に答える 7

23

データ型をunsigned-zerofillに変更します。使用しているものは何でも、float、int、decimal(6,2)...フィールドをunsigned-zerofillにのみ編集します。

于 2011-01-17T18:47:15.297 に答える
7

電話番号は、序数ではないという意味で実際には番号ではありません。彼らはただのキャラクターです-彼らは彼らが数字であるという事実は偶然です。

それらをvarcharに保存し、:Dに移動します

于 2010-05-07T04:29:57.107 に答える
5

電話番号には、読みやすくするために他の記号を含めることもできます...電話番号の正規表現はのようになり[0-9+-()*#]+ます。したがって、電話番号にテキストフィールドを使用し、さらにいくつかの検証を行う必要があります。

于 2010-05-07T04:30:35.340 に答える
3

これを解決するために、varcharとしてデータ型を使用できます。

于 2010-05-07T04:28:44.130 に答える
3

電話番号は整数ではなく、整数として保存しようとすると問題が発生するだけで、代わりに文字列として保存します。

于 2010-05-07T04:29:12.480 に答える
1

はい-数値フィールドには数値のみが格納され、それらのフォーマット(先行ゼロの付いたパディン)は格納されません。あなたはどちらか

  1. フィールドタイプを整数からvarcharまたはcharに変更します(桁数が常に同じ場合)。

  2. 数値を整数として保存しますが、必要に応じてプレゼンテーション層に0を付加します。

于 2010-05-07T04:31:10.013 に答える
-1

関数を使用して、必要な数をリードゼロでラップすることもできます。「文字列」が2桁未満の場合にリードゼロを追加するためにこの関数を作成しました(時間と分にリードゼロを追加するために使用されました)

function leadZero($num) {
    if (strlen($num) < 2) {
        return "0" . $num;
    } else {
        return $num;
    }

}

たとえば、02として出力する数値2の場合は、leadZero(2)を実行します。

これは、数値が2桁未満の場合にのみ、ゼロを追加します。たとえば、leadZero(14); 14を返します

于 2013-12-26T16:19:54.763 に答える