Mysql veritabanından kesilmiş kaydı alınıyor

1 Cevap php

Bir dize 3,4564 söylüyorlar.

Veritabanında ayarlanmış bir örnek bu kayıtları (VARCHAR) vardır:

Name       Score

Peter      3.35643294332
John       3.47870923
James      3.740249842
Henry      4.0432849
Solomon    3.456183923
Andrew     3.45743

Daha sonra üç ondalık basamağa yuvarlanır zaman 3,456 yani adını almak 'Süleyman' olarak aynı değeri verecektir veritabanı değerleri ile karşılaştırmak 3,4564-3 ondalık basamak (3,456 olmak için) kesilmesini istediğiniz

Php mysql bu konuda gitmek için en iyi yolu nedir?

1 Cevap

Puanınız sütunlar varchar olarak depolanan veri içeriyorsa, CAST işlevini kullanarak, ondalık için bu dönüştürebilirsiniz. Örneğin:

mysql> select cast('3.35643294332' as decimal(10,3));
+----------------------------------------+
| cast('3.35643294332' as decimal(10,3)) |
+----------------------------------------+
|                                  3.356 |
+----------------------------------------+
1 row in set (0,01 sec)


And note this will round the values correctly :

mysql> select cast('3.35663294332' as decimal(10,3));
+----------------------------------------+
| cast('3.35663294332' as decimal(10,3)) |
+----------------------------------------+
|                                  3.357 |
+----------------------------------------+
1 row in set (0,00 sec)

yani:

  • '3.3564' 3.356 ile dökülmüş
  • ve '3.3566' 3.357 ile dökülmüş


Now, you only have to use that cast function in your comparisons in your where clause.

Böyle bir şey, örneğin, çalışması gerektiğini varsayalım:

select * 
from your_table
where cast(Score as decimal(10,3)) = cast('3.4564' as decimal(10,3))

yani, sen "girişini" hem dönüştürmek ve 3 ondalık ondalık skorun; ve bu değerleri dönüştürmek.


A a sidenote : doing so, you won't be using any index that you might have on Score, and will always end up with a full-scan... Which means another solution would be better... For instance, if you could use a where clause like score >= X and Score <= Y, it would be much better...

Puan varchar olarak saklanan Ama, bu o kadar kolay olmayacak, sanırım - btw, ondalık olarak bu saklamalısınız ...