2009-08-30 4 views
1

こんにちは私はIntに設定されたデータベースに列を持っています。MySQL Intは0を削除します

私のデータは常に0で始まるので、新しいレコードを追加するたびに0が取り除かれ、最初の文字がある時点で1でなければなりません。

どうすればこの問題を解決できますか?

VARCHARを使用する最良の方法は、PHPを使用して検証しますか?

更新

私は02118272が、それが2118272.

+0

あなたのデータの例を挙げてください:今はどのように見え、どのように見えますか? – Quassnoi

+4

これはプレゼンテーションの問題であり、データの問題ではありません。番号02118272を「提示」したいが、番号はまだ2118272である。これはあなたのユーザーインターフェースで修正する必要がある。 –

答えて

1

としてデータベースに保存されて入力した場合、私はあなたがそのフィールドのvarchar型のタイプを使用する必要があることだと思います。あなたが数字ではないすべての文字を削除してあなたが最初の0を維持デシベルにこの値を置くことができ、これと

$var=preg_replace("/[^\d]/","",$var); 

:あなたは、PHPの整数に変数を変換したい場合は、単にこれを行うことができます。

+1

-1数値の書式設定を保存すると、書式設定によって2つの値が区別される場合があります。たとえば、01は1と同じではありません。 – JohnFx

+0

intval()を使用する方が簡単です – SheperdOfFire

6

整数7は、整数000000000000000000000000007と同じものです。彼らはどちらも...ああ、知っている... 7。データベースに格納されると、実際には000000000000000000000000007のように格納されますが、ほとんどのMySQLクライアントはこれらのゼロをすべて表示することはありません。

それは数字の特定の番号を使用して、これらの番号を表示するには、アプリケーションで重要な場合、あなたがstr_pad()機能を使用したいと、あなたに多くの先行ゼロを再度追加することができます

ここ
str_pad($your_string, 10, '0', STR_PAD_LEFT); 

10の長さでありますあなたはその文字列をしたい、'0'は、その長さにするために追加される文字であり、STR_PAD_LEFTは、文字列の左側に文字を追加すると言います。

一方、'007'の数字が基本的に数字'7'と異なる場合は、VARCHAR()フィールドを使用して保存する必要があります。それらはもはや整数ではありません。彼らは非常に意味の異なる文字列です。

+0

データベースに10進数として格納されていないため、DBの先頭にゼロが入っていると主張しています。つまり、この答えの残りの部分は問題を正しく処理する方法です。 –

+2

もちろん、データベースの先頭にゼロがあります。番号7は '000000000000000000000000000111'として保存されます:29の先行ゼロを持つ32ビット整数。確かに、それらは**小数点以下の**ゼロではありませんが、概念はまったく同じです。 – VoteyDisciple

3

データベースに保存する内容は、データです。そのデータの書式設定はアプリケーションの責任であり、データベース自体のものではありません。

私はそれを整数として保存し、先行ゼロで7桁の小数点以下の桁数が必要な場合は、データをアプリケーションに抽出した後にそれを行うのが適切です。

関連する問題