Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wyłącz notację naukową MySQL

Prawdopodobnie szukasz FORMAT lub ROUND funkcja:

Używanie FORMAT() , w zależności od lokalizacji i Twoich konkretnych potrzeb, być może będziesz musiał wymienić separator tysięcy :

mysql> SELECT FORMAT(9.755046187483832e17,0);
975,504,618,748,383,200

mysql> SELECT REPLACE(FORMAT(9.755046187483832e17,0), ',','');
975504618748383200

Z drugiej strony ROUND() bycie liczbą funkcja, wyświetla tylko cyfry :

mysql> SELECT ROUND(9.755046187483832e17,0);
975504618748383200

Zobacz http://sqlfiddle.com/#!2/d41d8/17614 za zabawę z tym.

EDYTUJ: Jak zauważyłeś, dwie ostatnie cyfry są zaokrąglane do 00 . Dzieje się tak z powodu DOUBLE granice precyzji. Musisz pamiętać, że podwójniew przybliżeniu . Jeśli potrzebujesz dokładnych wartości i/lub większej liczby cyfr niż jest to dostępne z 16-bitową precyzją double, prawdopodobnie musisz zmienić typ kolumny na DECIMAL . Domyślnie DECIMAL ma dokładność 10 cyfr (10 podstawa 10 cyfry). Możesz wyraźnie zażądać maksymalnie 65 cyfr.

Na przykład, jeśli potrzebujesz dokładności do 20 cyfr, piszesz coś takiego:

CREATE TABLE tbl (myValue DECIMAL(20), ...

Zobacz http://dev.mysql.com/ doc/refman/5.6/en/fixed-point-types.html

Pamiętaj jednak, że rzeczy nie tak proste. Wybranie kolumny dziesiętnej może po cichu przekonwertować ją na podwójną (lub duży ?) tracąc w ten sposób dodatkową precyzję. Być może trzeba będzie jawnie rzutować na ciąg, aby zachować pełną precyzję. Oznacza to, że możesz mieć do czynienia z tym na poziomie aplikacji.

create table tbl (dblValue DOUBLE, decValue DECIMAL(20,0));
insert into tbl values (975504618748383289, 975504618748383289);

SELECT dblValue, decValue FROM tbl;
--> DBLVALUE            DECVALUE
--> 975504618748383200  975504618748383200

SELECT CAST(dblValue AS CHAR), CAST(decValue AS CHAR) FROM tbl;
--> CAST(DBLVALUE AS CHAR)  CAST(DECVALUE AS CHAR)
--> 9.755046187483832e17    975504618748383289

Zobacz http://sqlfiddle.com/#!2/d5f58/2 po przykłady.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Usuń używając wielu tabel i powtórz tabelę w podzapytaniu

  2. Jak znaleźć aktywną liczbę otwartych połączeń z bazą danych w H2/MySQL?

  3. Zmiana strefy czasowej MySQL?

  4. Ignoruj ​​poszczególne kryteria GDZIE

  5. Grupowanie klauzul WHERE w Codeigniter