2009-09-07 91 views
18

Tôi đang chạy SQL cần làm tròn giá trị cho số nguyên gần nhất.Làm tròn giá trị cho số nguyên gần nhất trong SQL UPDATE

Những gì tôi cần là 45,01 viên đạn đến 46. Ngoài ra 45,49 vòng đến 46. Và 45,99 viên đạn lên đến 46, quá. Tôi muốn tất cả mọi thứ lên một chữ số.

Làm cách nào để đạt được điều này trong câu lệnh UPDATE như sau?

Update product SET price=Round 

Trả lời

23

Bạn có thể sử dụng ceil chức năng, ít nhất là trên MySQL; phần mã SQL này:

select ceil(45.01), ceil(45.49), ceil(45.99); 

sẽ đưa bạn "46" mỗi lần.

Đối với cập nhật của bạn, vì vậy, tôi muốn nói:

Update product SET price = ceil(45.01) 


BTW: Trên MySQL, ceil là một bí danh để ceiling; không chắc chắn về hệ thống DB khác, vì vậy bạn có thể phải sử dụng một hay khác, tùy thuộc vào DB bạn đang sử dụng ...


Trích dẫn tài liệu:

CEILING(X)

Returns giá trị số nguyên nhỏ nhất không phải là nhỏ hơn X.

Và ví dụ đã cho:

mysql> SELECT CEILING(1.23); 
     -> 2 
mysql> SELECT CEILING(-1.23); 
     -> -1 
2

Điều này tùy thuộc vào máy chủ cơ sở dữ liệu, nhưng thường được gọi là một cái gì đó như CEIL hoặc CEILING. Ví dụ, trong MySQL ...

mysql> select ceil(10.5); 
+------------+ 
| ceil(10.5) | 
+------------+ 
|   11 | 
+------------+ 

Sau đó bạn có thể làm UPDATE PRODUCT SET price=CEIL(some_other_field);

+0

chào mừng bạn đến với stackoverflow! Bất cứ điều gì thụt vào bốn không gian được định dạng như mã, bạn có thể sử dụng nút có chữ số nhị phân trên nó để làm điều này trong trình soạn thảo. Hy vọng bạn không nhớ tôi sửa câu trả lời của bạn để làm điều này! –

3

Nếu bạn muốn làm tròn sau đó sử dụng chức năng tròn. Sử dụng chức năng trần khi bạn muốn có số nguyên nhỏ nhất lớn hơn đối số của bạn.

Đối với ví dụ: chọn tròn (843.4923423423,0) từ kép cung cấp cho bạn 843 và

chọn tròn (843.6923423423,0) từ kép cung cấp cho bạn 844

+0

Điều gì sẽ xảy ra nếu bạn chỉ muốn làm tròn lên đồng xu gần nhất? Nếu số tiền thuế đến hạn là $ 13.052, tôi cần làm tròn số tiền đó lên đến $ 13.053. Tôi có thể sử dụng trần(), nhưng tôi sẽ phải đầu tiên nhiều bởi 100, sau đó chia cho 100. Có vẻ lame. – datagod

4

Đối với MS SQL CEILING (số của bạn) sẽ làm tròn nó lên. FLOOR (số của bạn) sẽ làm tròn nó xuống

3

Trần là lệnh bạn muốn sử dụng.

Không giống như vòng, Trần chỉ lấy một tham số (giá trị bạn muốn làm tròn), do đó nếu bạn muốn làm tròn số thập phân, bạn sẽ cần nhân số đó với nhiều chữ số thập phân trước và chia sau đó.

Ví dụ.

Tôi muốn làm tròn 1.2345 đến 2 chữ số thập phân.

CEILING(1.2345*100)/100 AS Cost 
Các vấn đề liên quan