2017-08-12 4 views
0

wie mit 2 Dezimalgenauigkeit in Datenbank Dezimalwert speichern nur, wenn die Zahl in Dezimal und hat mehr als zwei Dezimalstellen wiemysql Präzision nur, wenn dezimal

10,00

speichern soll

10,0 speichern soll

speichern soll 10

10,110,12

10,123 sollte sollte 10,1

10,12 speichern, speichern soll speichern 10,12

10,1234 speichern soll 10,12

Ich habe versucht, diese so weit und keiner von ihnen arbeiten

FLOAT(20,2) 
DOUBLE(20,2) 
DECIMAL(20,2) 

Alle diese konvertieren einfache in 10,00

Ich möchte um festzulegen, dass dieser Spaltentyp nicht in Abfragen verwendet werden soll.

+0

Was sollte "10.10" speichern als? –

+0

sollte es 10.1 sein –

Antwort

0

Sie verwirren, wie etwas gespeichert wird, wie es präsentiert wird. In allen Fällen möchten Sie den Wert als decimal(20, 2) speichern, da Sie sich nur um 2 Stellen der Genauigkeit kümmern.

Wenn Sie es ausgeben, dann möchten Sie es in eine Zeichenfolge konvertieren. Wenn Kommas in den größeren Zahlen akzeptabel sind, dann etwas wie:

select (case when col = floor(col) then format(col, 0) 
      when col*10 = floor(col * 10) then format(col, 1) 
      else format(col, 2) 
     end) as col_as_string 
+0

Ich möchte diesen Spaltentyp nicht in Abfrage verwenden möchten. –

+0

Es gibt kein DATATYPE, das das tut, wonach Sie fragen. –