我遇到這種情況,ai 有一個包含 1000 個產品的大型資料庫。
例如,其中一些價格為 12.3、20.7、55.1。
| Name | Price |
| -------- | -------------- |
| Product 1| 12.3 |
| Product 2| 20.7 |
| Product 3| 55.1 |
(等等)...
我試過的是update prices set price = ROUND (price, 0.1)。輸出將是:
| Name | Price |
| -------- | -------------- | (after updated)
| Product 1| 12.3 | 12.0
| Product 2| 20.7 | 21.0
| Product 3| 55.1 | 55.0
小數 < .5 的價格將保持不變,我沒有想法。
我會很感激任何幫助。
編輯,我需要更新所有行,我正在嘗試了解CEILING()但僅顯示如何使用它SELECT,關于如何執行 idkUPDATE CEILING或其他內容的任何想法?
uj5u.com熱心網友回復:
不完全清楚你在問什么,但我可以告訴你所示的函式呼叫沒有意義。
該ROUND()函式的第二個引數是小數位數,而不是您希望四舍五入的值的大小。此外,該函式僅接受該引數的整數型別。因此,如果您將值傳遞0.1給函式,將會發生的情況是首先將值轉換為整數,然后轉換0.1為整數的結果是0。
我們看到, call 和 callROUND(price, 0.1)是一樣的ROUND(price, 0)。
如果要四舍五入到最接近0.1的 ,則為小數點后一位,該ROUND()函式的正確值為1.
ROUND(price, 1)
在此處比較結果:
https://dbfiddle.uk/?rdbms=sqlserver_2019&fiddle=7878c275f0f9ea86f07770e107bc1274
注意后面的 0 仍然存在,因為值的基本型別沒有改變。如果您還想洗掉尾隨的 0,那么您真的進入了字串領域,為此您應該等待客戶端代碼、應用程式或報告工具處理轉換。
uj5u.com熱心網友回復:
用于UPDATE prices SET PRICE = CEILING(PRICE);獲取小數 >0.5 的值的下一個整數
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/468700.html
