2012-02-05 84 views
20

Tôi có một số bảng trong cơ sở dữ liệu SQLite chứa loại cột FLOAT, bây giờ tôi muốn lấy giá trị bằng truy vấn và định dạng trường float luôn có 2 chữ số thập phân, cho đến nay tôi có viết i truy vấn như thế này:Số định dạng SQLite với 2 chữ số thập phân luôn là

SELECT ROUND(floatField,2) AD field FROM table 

này trả về một resultset như sau:

3.56 
---- 
2.4 
---- 
4.78 
---- 
3 

tôi muốn để định dạng kết quả luôn luôn với hai chữ số thập phân, vì vậy:

3.56 
---- 
2.40 
---- 
4.78 
---- 
3.00 

Có thể định dạng luôn với 2 chữ số thập phân trực tiếp từ Truy vấn SQL không? Làm thế nào nó có thể được thực hiện trong SQLite?

Cảm ơn.

+0

Bạn đã tìm thấy một giải pháp? –

Trả lời

0

Do số cách các cửa hàng sqlite trong nội bộ,

Bạn có thể muốn một cái gì đó như thế này

select case when substr(num,length(ROUND(floatField,2))-1,1) = "." then num || "0" else num end from table; 
+2

Không hoạt động, số này cũng có thể trên 10, vì vậy tôi có thể có 100.4, 1290.7, ... – aleroot

+0

Ký hiệu lũy thừa cũng sẽ làm cho lỗi này cũng thất bại. – swdev

-1

Bạn có thể thử Chọn Str (12345,6789, 12, 3)

hiển thị: '12.345,679 '(3 dấu cách, 5 chữ số 12345, dấu thập phân và ba chữ số thập phân (679) - nó tròn nếu nó phải cắt ngắn, (trừ khi phần nguyên quá lớn cho tổng kích thước, trong đó dấu hoa thị được hiển thị thay thế .)

cho Tổng cộng 12 ký tự, với 3 ký tự ở bên phải dấu thập phân.

+1

Không hoạt động. SQLite không có hàm STR(). (SQLite! = SQL Server) – swdev

37

Bạn có thể sử dụng printf như:

SELECT printf("%.2f", floatField) AS field FROM table; 

ví dụ:

sqlite> SELECT printf("%.2f", floatField) AS field FROM mytable; 
3.56 
2.40 
4.78 
3.00 
sqlite> 
+11

Chỉ có sẵn với SQLite 3.8.3 hoặc cao hơn (bản phát hành tháng 2 năm 2014) – swdev

+1

Giống như @swdev đã nói, chức năng này hiện có sẵn trên nhiều thiết bị Android, có khả năng gây ra sự cố ứng dụng trên thiết bị không được hỗ trợ. Tôi phát hiện ra bởi kinh nghiệm, thử nghiệm trên một GALaxy SIII w/o các bản cập nhật mới nhất (mà là khá phổ biến, BTW). – AlxDroidDev

+0

Cùng một vấn đề ở đây, tôi cần hỗ trợ một số thiết bị cũ hơn và tôi không thể sử dụng printf –

Các vấn đề liên quan