Anda mungkin mencari FORMAT
atau ROUND
fungsi:
Menggunakan FORMAT()
, tergantung pada lokal Anda dan kebutuhan spesifik Anda, Anda mungkin harus mengganti pemisah ribuan :
mysql> SELECT FORMAT(9.755046187483832e17,0);
975,504,618,748,383,200
mysql> SELECT REPLACE(FORMAT(9.755046187483832e17,0), ',','');
975504618748383200
Sebaliknya, ROUND()
menjadi numerik fungsi, itu hanya menampilkan digit :
mysql> SELECT ROUND(9.755046187483832e17,0);
975504618748383200
Lihat http://sqlfiddle.com/#!2/d41d8/17614 untuk bermain dengan itu.
EDIT: Seperti yang Anda perhatikan, dua digit terakhir dibulatkan menjadi 00 . Itu karena DOUBLE
batas presisi. Anda harus ingat bahwa ganda adalah perkiraan . Jika Anda memerlukan nilai presisi dan/atau lebih banyak digit daripada yang tersedia dengan presisi ganda 16-bit, Anda mungkin perlu mengubah jenis kolom menjadi DECIMAL
. Secara default DECIMAL
memiliki presisi 10 digit (10 basis 10 angka). Anda dapat secara eksplisit meminta hingga 65 digit.
Misalnya, jika Anda membutuhkan presisi hingga 20 digit, Anda dapat menulis seperti ini:
CREATE TABLE tbl (myValue DECIMAL(20), ...
Lihat http://dev.mysql.com/ doc/refman/5.6/en/fixed-point-types.html
Harap dicatat namun dari hal-hal yang tidak sesederhana itu. Memilih kolom desimal mungkin secara diam-diam mengubahnya menjadi ganda (atau besar ?) sehingga kehilangan presisi ekstra. Anda mungkin harus secara eksplisit melemparkan ke string untuk mempertahankan presisi penuh. Itu berarti Anda mungkin harus menghadapinya di tingkat aplikasi.
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
Lihat http://sqlfiddle.com/#!2/d5f58/2 sebagai contoh.