2016-11-29 2 views
0

私は照会しようとするデータベースに小数フィールドを持っています。このフィールドはすべての種類の番号に使用されるため、2桁の通貨または異なる形式の他の通貨になります。フィールドは10進数(15,5)として設定されます。PHPとMySQL小数点以下の桁を照会する方法

したがって、通貨は4.99000のようにそこに保存することができます。小文字の区切りと10進数の区切りを示す別のテーブルに保存されている設定に従って読み上げると書式を設定します。すべてそれは問題ありませんが、私はどのようにそのような質問をしますか? "WHERE field = 4.99"は明らかにこのレコードを返さないためです。私は何をすることができますか?

UPDATE:

OK、私は若干異なる道を行かなければなりません。私は入力された番号を取り、それを配列に分割するために爆発を使用します。私は小数点の後にそれを知っています。次のステップとして、私はこのようなものについて

$numericValue = explode($myFormat['decimalseparator'], $value) // could be a . or a , 
$newValue = str_pad($numericValue[1], 5, "0", STR_PAD_RIGHT) ; 
$dbValue = $numericValue[0].'.'.$numericValue[1]; 

動作するようには思えないが、私はここで何かを監督かしらん...

+4

「このレコードは明らかに返されません」あなたは試しましたか?それはテーブルの列のデータ型が動作する小数をサポートしています –

+0

はい私はそれを試して、それは動作しませんでした – Luka

+0

あなたのテーブル構造を共有します。 –

答えて

0

方法を使用するので、私は5つの数字を持っている:

SELECT * FROM mytable WHERE 
'field' REGEXP '(^[4]+.[9]+[9]$)|(^[4]+.[9]+[9]+0{1,3}$)'; 

MySQL正規表現ドキュメントhere

P.S:SQLクエリは、そのアイデアを伝えるための簡単な草案です。

+0

正確な数字を検索する必要があるため、ワイルドカードは使用できません。 – Luka

+0

正確な数字はどういう意味ですか?あなたはそれを詳しく教えてもらえますか? –

+0

4.99を検索したいので、レコードが4.9952の場合は表示しないでください。私は上記の解決策を解決しました。私は実際にMySql自体に何かが組み込まれているかどうか疑問に思っていましたが、上記のPHPソリューションで動作するようです。 – Luka

1
SELECT 4.99 = 4.9900000000; 

+---------------------+ 
| 4.99 = 4.9900000000 | 
+---------------------+ 
|     1 | 
+---------------------+ 
関連する問題