こんにちは私はIntに設定されたデータベースに列を持っています。MySQL Intは0を削除します
私のデータは常に0で始まるので、新しいレコードを追加するたびに0が取り除かれ、最初の文字がある時点で1でなければなりません。
どうすればこの問題を解決できますか?
VARCHARを使用する最良の方法は、PHPを使用して検証しますか?
更新
私は02118272が、それが2118272.
こんにちは私はIntに設定されたデータベースに列を持っています。MySQL Intは0を削除します
私のデータは常に0で始まるので、新しいレコードを追加するたびに0が取り除かれ、最初の文字がある時点で1でなければなりません。
どうすればこの問題を解決できますか?
VARCHARを使用する最良の方法は、PHPを使用して検証しますか?
更新
私は02118272が、それが2118272.
としてデータベースに保存されて入力した場合、私はあなたがそのフィールドのvarchar型のタイプを使用する必要があることだと思います。あなたが数字ではないすべての文字を削除してあなたが最初の0を維持デシベルにこの値を置くことができ、これと
$var=preg_replace("/[^\d]/","",$var);
:あなたは、PHPの整数に変数を変換したい場合は、単にこれを行うことができます。
-1数値の書式設定を保存すると、書式設定によって2つの値が区別される場合があります。たとえば、01は1と同じではありません。 – JohnFx
intval()を使用する方が簡単です – SheperdOfFire
整数7
は、整数000000000000000000000000007
と同じものです。彼らはどちらも...ああ、知っている... 7。データベースに格納されると、実際には000000000000000000000000007
のように格納されますが、ほとんどのMySQLクライアントはこれらのゼロをすべて表示することはありません。
それは数字の特定の番号を使用して、これらの番号を表示するには、アプリケーションで重要な場合、あなたがstr_pad()
機能を使用したいと、あなたに多くの先行ゼロを再度追加することができます
str_pad($your_string, 10, '0', STR_PAD_LEFT);
、10
の長さでありますあなたはその文字列をしたい、'0'
は、その長さにするために追加される文字であり、STR_PAD_LEFT
は、文字列の左側に文字を追加すると言います。
一方、'007'
の数字が基本的に数字'7'
と異なる場合は、VARCHAR()
フィールドを使用して保存する必要があります。それらはもはや整数ではありません。彼らは非常に意味の異なる文字列です。
データベースに10進数として格納されていないため、DBの先頭にゼロが入っていると主張しています。つまり、この答えの残りの部分は問題を正しく処理する方法です。 –
もちろん、データベースの先頭にゼロがあります。番号7は '000000000000000000000000000111'として保存されます:29の先行ゼロを持つ32ビット整数。確かに、それらは**小数点以下の**ゼロではありませんが、概念はまったく同じです。 – VoteyDisciple
データベースに保存する内容は、データです。そのデータの書式設定はアプリケーションの責任であり、データベース自体のものではありません。
私はそれを整数として保存し、先行ゼロで7桁の小数点以下の桁数が必要な場合は、データをアプリケーションに抽出した後にそれを行うのが適切です。
あなたのデータの例を挙げてください:今はどのように見え、どのように見えますか? – Quassnoi
これはプレゼンテーションの問題であり、データの問題ではありません。番号02118272を「提示」したいが、番号はまだ2118272である。これはあなたのユーザーインターフェースで修正する必要がある。 –